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 }
  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3226505.html
Copyright © 2011-2022 走看看