逻辑幻象


私信TA

用户名:miragelogic

访问量:27292

签 名:

稳中带皮,还有点方

等  级
排  名 264
经  验 5869
参赛次数 0
文章发表 80
年  龄 0
在职情况 学生
学  校 浙江海洋大学
专  业 机械电子工程

  自我简介:

解题思路:提交一波 代为保存

考虑n=12 的情况下

033330算回文

注意事项:

参考代码:

#include<stdio.h>
int count;
int n;
int a[5],b[6],c[10000];
void jizhi_f(){
 c[count++]=a[1]*10000+a[2]*1000+a[3]*100+a[2]*10+a[1];
}
void jizhi_s(){
 c[count++]=b[1]*100000+b[2]*10000+b[3]*1000+b[3]*100+b[2]*10+b[1];
}
void jiwu(){
 int i=0,t;
 a[3]=n-2;
 a[1]=1;
 a[2]=0;
 while(a[3]>9){
  a[3]-=2;
  a[2]+=1;
 }
 while(a[2]>9){
  a[2]--;
  a[1]++;
 }
 //printf("\n%d %d  %d\n\n",a[1],a[2],a[3]);
 jizhi_f();
 while(a[3]>0){
  while(a[2]>0 && a[1]<9){
   a[2]--;
   a[1]++;
   jizhi_f();
  }
  a[3]-=4;
  t=(n-a[3])/2;
  a[2]=t-1;
  a[1]=1;
  while(a[2]>9){
   a[2]--;
   a[1]++;
  }
  if(a[1]>9 || a[3]<0){
   return ;
  }
  jizhi_f();
 }
}
void jiliu(){
 int i,t;
 t=n/2;
 b[1]=0;b[2]=0;b[3]=t;
 while(b[3]>9){
  b[3]--;
  b[2]++;
 }
 while(b[2]>9){
  b[2]--;
  b[1]++;
 }
 jizhi_s();
 while(b[1]<=9 ){
  while(b[2]<9 && b[3]>0){
   b[3]--;
   b[2]++;
   jizhi_s();
   //printf("%d %d %d\n",b[1],b[2],b[3]);
  }
  b[1]++;
  if(b[1]>9){
   return ;
  }
  t=(n-2*b[1])/2;
  if(t<0){
   return ;
  }
  b[3]=t;
  b[2]=0;
  while(b[3]>9){
   b[3]--;
   b[2]++;
  }
  if(b[2]>9){
   return ;
  }
  jizhi_s();
 } 
}
void sort(){
 int i,j,k;
 for(i=0;i<count-1;i++){
  for(j=i+1;j<count;j++){
   if(c[i]>c[j]){
    k=c[i];
    c[i]=c[j];
    c[j]=k;
   }
  }
 }
}
int main(){
 count=0;
 scanf("%d",&n);
 if(n<10 || n>100){
  return ;
 }
 if(n>54){
  printf("-1\n");
  return ;
 }
 if(n%2==1){
  if(n<=45){
   jiwu();  
  }
  else{
   printf("-1\n");
   return ;
  }
 }
 else if(n%2==0){
  if(n>45&&n<=54){
      jiliu();   
  }
  else if( n<45){
   jiwu();
   jiliu();  
        }
 }
 sort();
 int i;
 //printf("%d\n",count);
 for(i=0;i<count;i++){
//  if(c[i]%10==0){
//   printf("%06d\n",c[i]);
//  }
//  else{
//   printf("%d\n",c[i]);  
//  }
        printf("%d\n",c[i]);
 }
 return 0;
}

 

0.0分

0 人评分

  评论区

  • «
  • »