• 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 }
  • 相关阅读:
    hive笔记:复杂数据类型-array结构
    【数据库】数据库入门(四): SQL查询
    【数据库】数据库入门(三): SQL
    【数据库】数据库入门(二): 关系型数据库
    【数据库】数据库入门(一):基本概念
    mysql 多条数据中,分组获取值最大的数据记录
    log4j.properties配置详解与实例-全部测试通过
    spec开发思路以及理解
    运用 finereport 和 oracle 结合开发报表思路大总结
    Oracle的trim( )、ltrim( )、rtrim( )三个函数的用法及注意事项
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3226505.html
Copyright © 2020-2023  润新知