1548_猪数 第一个AC的程序~~

来源:互联网 发布:网络控制云台 编辑:程序博客网 时间:2024/06/08 02:10

个人以为这个程序太有纪念意义了,所以发上来分享一下下.

http://acm.fzu.edu.cn/problem.php?pid=1548是题目的地址.

虽然代码效率不是很高,但是依旧AC了~~感动啊,因为第二天就要比赛了...

个人是极度热爱编程,所以学编程三个月就报名参加acm~~

最后拿了200分,,,位列160名...

比赛有600人参加,而且多为大二大三的学长...

实力差距依旧悬殊~~而我竟然还有这个名次~~

有些惊讶,,,惊喜之时,,依旧几分失落~~

年轻人嘛~~雄心壮志~~

明年的今天,我一定拿个一等来!

                                                                                           

                                               ---------------suneast        

even I am not the best.But I can be my best! Just believe it I can !         

以下是题目:

猪数
Time Limit:1sMemory limit:32MAccepted Submit:161Total Submit:286

在猪的世界里有一种数叫猪数,猪是这么定义猪数的:给定一个进制B(2<=B<=20,B用十进制表示),在这个进制下,这个数的平方从左向右念和从右像左念都一样,用‘A’,‘B’……表示10,11等等。

例如:B=10时,121就是一个猪数,因为121的平方14641满足条件。

你的任务是编写一个程序,求出所有大于等于1小于等于300的猪数。

Input

输入包含多组测试数据,请处理到EOF结束。
每组测试数据,由一行组成,为一个单独的整数B(B用十进制表示)。

Output

对每组数据输出:每行两个数字,第二个数是第一个数的平方,且第一个数是猪数。(注意:这两个数都应该在B那个进制下)

Sample Input

10

Sample Output

1 12 43 911 12122 48426 676101 10201111 12321121 14641202 40804212 44944264 69696

Sample Input

15

Sample Output

1 12 43 94 118 44C 9911 12114 19122 48429 6B644 133151 1AA188 4CC499 6226101 10201111 12321121 14641131 16B61

Original: ACM模拟赛之再见猪年

下面是我的AC代码,,不足之处希望大家多多指教.

THANK YOU!

#include<stdio.h>
#define N 300

int main()
{int a[N+1]={0},d[20]={0},c[10]={0};
int i,j,B,m,t,t1,t2;
for(i=1;i<=N;i++)
a[i]=i*i;

while(scanf("%d",&B)!=EOF)
{                    
for(i=1;i<=N;i++)
 {t=a[i];j=1;
 while(t!=0)
  {d[j]=t%B;
  t/=B;j++;
  }

 m=1;t1=--j;
 while(m<j)
  if(d[m++]!=d[j--])
   goto end;
 j=1;
 t=i;
 while(t)
  {c[j]=t%B;
  t/=B;j++;
  }
 t2=--j;
 for(j=t2;j>0;j--)
  {t=c[j]/10;
  if(t)
  printf("%c",c[j]%10+'A');
  else
  printf("%d",c[j]);
  }
 printf(" ");
 for(j=t1;j>0;j--)
  {t=d[j]/10;
  if(t)
  printf("%c",d[j]%10+'A');
  else
  printf("%d",d[j]);
  }
 putchar('/n');
 end : ;
 }
}
return 0;
}