zoukankan      html  css  js  c++  java
  • PAT-进制转换-A1019 General Palindromic Number (20分)

    题目描述:

      给出两个整数n、b,问十进制整数n在b进制下是否是回文数,若是,则输出Yes;否则,输出No。在此之后输出n在b进制下的表示。

      单词:Palindromic Number--回文数;decimal--十进制的。 

    输入格式:

      输入用空格分隔的两个数,第一个数是十进制数n(0<N109),第二个数是十进制数b( 2b109)。

    输出格式:

      第一行输出Yes或No,第二行输出十进制数n在b进制下的表示,用空格把每个数隔开,末尾不能有多余空格。

    样例:

      样例一:

        输入:27 2

        输出:第一行:Yes     第二行:1 1 0 1 1

      样例二:

        输入:121 5

        输出:第一行:No      第二行:4 4 1

    思路:

    1. 先将十进制数n转换为b进制数
    2. 对数进行判断,由数组,比较位置i和num-i-1的数,只要有一个数不同,就不是回文数。

    注意点:

      注意特殊数据,0的输出。

    代码:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 //存储转换后的数的每一位数
     5 int datas[48] = { 0 };
     6 
     7 int main()
     8 {
     9     int n, b, num = 0;
    10     bool flag = true;
    11 
    12     scanf("%d %d", &n, &b);
    13 
    14     //进行进制转换
    15     do
    16     {
    17         datas[num++] = n % b;
    18         n /= b;
    19     } while (n != 0);
    20 
    21     //对转换后的数进行判断
    22     for (int i = 0;i < num/ 2;i++)
    23     {
    24         if (datas[i] != datas[num - i - 1])
    25         {
    26             flag = false;
    27             break;
    28         }
    29     }
    30 
    31     //输出判断结果
    32     if (flag)printf("Yes
    ");
    33     else printf("No
    ");
    34 
    35     //输出转换结果
    36     for (int i = num - 1;i >= 0;i--)
    37     {
    38         printf("%d", datas[i]);
    39         if (i != 0)printf(" ");
    40     }
    41 
    42     return 0;
    43 }
    View Code

    参考书籍-《算法笔记》-胡凡

  • 相关阅读:
    使用 OpenSmtp.dll 发送邮件 (记录) 西安
    国庆假期加班头疼 西安
    asp.net 下 使用 showModalDialog 模式窗口 (记录) 西安
    严重声讨 西安
    牙痛,医生说我这是根尖周炎,有点郁闷
    Google域名被国内某商抢注 竟只得重金去赎
    Windows自带的一个罕为人知的无敌命令
    在CSS中使用继承
    删除字符串最后一个字符的几种方法
    如何在一个RowFilter过的dataview中增加一行
  • 原文地址:https://www.cnblogs.com/fangzhiyou/p/12404651.html
Copyright © 2011-2022 走看看