zoukankan      html  css  js  c++  java
  • USACO 1.2.4 Palindromic Squares

    //译题
    //★Palindromic Squares 回文平方数
    回文数是指从左向右念和从右像做念都一样的数.如12321 就是一个典型的回文数.
    给定一个进制B(2<=B<=20 十进制),输出所有的大于等于1 小于等于300 且它的平方用B 进制表示
    时是回文数的数.用’A’,’B’……表示10,11 等等.
    PROGRAM NAME: palsquare
    INPUT FORMAT
    共一行,一个单独的整数B(B 用十进制表示).
    SAMPLE INPUT (file palsquare.in)
    10
    OUTPUT FORMAT
    每行两个数字,第二个数是第一个数的平方,且第二个数是回文数.(注意:这两个数都应该在B 那个
    进制下)
    SAMPLE OUTPUT (file palsquare.out)
    1 1
    2 4
    3 9
    11 121
    22 484
    26 676
    101 10201
    111 12321
    121 14641
    202 40804
    212 44944
    264 69696
     1 /*
     2     这道题注意两个个地方,一个是如何将十进制数转换为其他进制的数 (2—20) 
     3                         另一个是如何判断是否是回文数 ; 
     4     按照题目的意思,从1扫到300,找出符号条件的数,转化为给定的进制输出即可。 
     5 */
     6 #include<stdio.h>
     7 int B, l, L;
     8 int x[20],y[20];
     9 char tmp1[20], tmp2[20];
    10 char temp[21]={'0','1','2','3','4','5','6','7','8','9',
    11                'A','B','C','D','E','F','G','H','I','J'};
    12 void Change(int n)                //用于进制转换 
    13 {
    14     int m = n;
    15     l = -1;
    16     while(m) {x[++l] = m%B; m /= B;}
    17     m = n*n, L = -1;
    18     while(m) {y[++L] = m%B; m /= B;}
    19 }
    20 
    21 int OK()                    //判断是否是回文数 
    22 {
    23     int i,j;
    24     for(i=0, j=L; i<=j; i++, j--)
    25         if(y[i] != y[j]) return 0;
    26     return 1;    
    27 }
    28 
    29 void output(int n)            //用于输出 
    30 {
    31     int i,j;
    32     for(i=l,j=0;i>=0;j++,i--)        
    33         tmp1[j] = temp[x[i]];    //通过temp把tmp1转化成正序(原来在x里存放时是倒序的,而且超过10的数还是用数字表示,这个用temp可以进行转换) 
    34     for(i=L,j=0;i>=0;j++,i--)
    35         tmp2[j] = temp[y[i]];    //同上 
    36     printf("%s %s
    ",tmp1,tmp2);    //打印 
    37 }
    38 
    39 int main()
    40 {
    41     freopen("palsquare.in","r",stdin);
    42     freopen("palsquare.out","w",stdout);
    43     int i;
    44     scanf("%d",&B);
    45     for(i=1;i<=300;i++)        //依照题意 扫1到300 
    46     {
    47         Change(i);
    48         if(OK()) output(i);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    SWFUpload说明文档
    Ubuntu中root用户和user用户的相互切换
    不用IF比较两数大小
    Linux服务器下验证码图片不显示问题
    常用CSS语法
    常用CSS语法
    漫谈DataList的用法
    Session丢失浅析
    浅谈C#托管程序中的资源释放问题
    C#2.0 泛型详解
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3226505.html
Copyright © 2011-2022 走看看