zoukankan      html  css  js  c++  java
  • [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 }
  • 相关阅读:
    hdu1114Piggy-Bank(完全背包)
    hdu 2602 Bone Collector(01背包)
    USACO s1.2.Milking Cows(求最长连续时间和最长间断时间)
    poj3278(BFS)
    Codeforces Round #288 (Div. 2)B(字符串)
    [学习笔记]形态学图像处理-击中或击不中变换
    [学习笔记]形态学图像处理-膨胀与腐蚀
    【转】RDO、SAD、SATD、λ
    [原]H264帧内预测
    【原】CAVLC的个人理解
  • 原文地址:https://www.cnblogs.com/yue36/p/12377927.html
Copyright © 2011-2022 走看看