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 }
  • 相关阅读:
    生日快乐 Happy Birthday To Me
    提取与设置函数值
    相当牛的老师
    C#核心概念装箱和拆箱(什么是装箱和拆箱)
    网易云音乐代理,解锁变灰歌曲
    ASP.NET 水晶报表在iis中无法显示的解决办法 Beacher
    android开发 服务端设备类型判断 Beacher
    asp.net之图片验证码生成 Beacher
    c# 委托之异步调用delegate Beacher
    log4net 日志组件使用方法 Beacher
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3226505.html
Copyright © 2011-2022 走看看