• [PAT] A1023 Have Fun with Numbers


    【题目大意】

    给一个不超过20位的数字,如果将它乘以2得到的数仅仅是原来的数字重新排列得到的,那就输出Yes,下一行输出加倍后的数。如果不是,输出No,下一行输出加倍后的数。

    【思路】
    20位过于庞大,超出了long long,所以用数组来做,其中的算法核心有竖式乘法的数组计算法。

    【tips】

    1 判断原数和double原数是否拥有同样数字的方法:

    建立一个数组check[0~9],如果原数的第i位是a,则check[a]++;如果double原数的第i位是a,则check[a]--。最后检查check[0~9],只要有一个不为0,则输出No。

    2 读入一个字符(包含空格),用char c = getchar();

    【AC代码】

     1 #include<iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int main()
     5 {
     6     int num[22];
     7     int digit = 0;
     8     char c;
     9     while (1)
    10     {
    11         c = getchar();
    12         if (c == '
    ')break;
    13         num[digit] = c - '0';
    14         digit++;
    15     }
    16     bool jinwei = 0;//进位标志
    17     int i;
    18     int dnum[22];
    19     for (i = digit - 1; i >= 0; i--)
    20     {
    21         dnum[i] = 2 * num[i] + jinwei;
    22         if (dnum[i] >= 10)
    23         {
    24             dnum[i] -= 10;
    25             jinwei = 1;
    26         }
    27         else jinwei = 0;
    28     }
    29     if (jinwei == 1)
    30     {
    31         cout << "No" << endl;
    32         cout << 1;//输出进位
    33     }
    34     else
    35     {
    36         int check[10] = { 0 };
    37         for (i = 0; i < digit; i++)
    38         {
    39             check[num[i]]++;
    40             check[dnum[i]]--;
    41         }
    42         for (i = 0; i < 10; i++)
    43             if (check[i] != 0)
    44                 break;
    45         if (i == 10)cout << "Yes" << endl;
    46         else cout << "No" << endl;
    47     }
    48     for (i = 0; i < digit; i++)
    49         cout << dnum[i];
    50     return 0;
    51 }
  • 相关阅读:
    禁止进入activity自动弹出键盘
    sqlite的limit使用
    关于anroid设置webview背景方法探讨(转)
    遍历ListView,查出每一项的内容
    虚拟机网络不通故障解决
    zabbix第一篇:zabbix安装及使用
    ansible使用1
    PS1修改xshell命令行样式
    手动配置网卡配置文件ifcfg-eth0
    Linux虚拟机centos系统安装
  • 原文地址:https://www.cnblogs.com/yue36/p/12377927.html
Copyright © 2020-2023  润新知