zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practice (中文) 1074 宇宙无敌加法器 (20分) 坑多……

    1.题目

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT 星人通常只需要记住前 20 位就够用了,以后各位默认为 10 进制。

    在这样的数字系统中,即使是简单的加法运算也变得不简单。例如对应进制表“0527”,该如何计算“6203 + 415”呢?我们得首先计算最低位:3 + 5 = 8;因为最低位是 7 进制的,所以我们得到 1 和 1 个进位。第 2 位是:0 + 1 + 1(进位)= 2;因为此位是 2 进制的,所以我们得到 0 和 1 个进位。第 3 位是:2 + 4 + 1(进位)= 7;因为此位是 5 进制的,所以我们得到 2 和 1 个进位。第 4 位是:6 + 1(进位)= 7;因为此位是 10 进制的,所以我们就得到 7。最后我们得到:6203 + 415 = 7201。

    输入格式:

    输入首先在第一行给出一个 N 位的进制表(0 < N ≤ 20),以回车结束。 随后两行,每行给出一个不超过 N 位的非负的 PAT 数。

    输出格式:

    在一行中输出两个 PAT 数之和。

    输入样例:

    30527
    06203
    415
    

    输出样例:

    7201

    2.题目分析

    1.测试点1 3 :最前面如果有进位的话也要输出!(类似加法题目一定要联想到这个坑)

    2.测试点5: 结果是0 

    3.代码

    #include<iostream>
    #include<string>
    #include<cstring>
    using namespace std;
    int main()
    {
    	string n,a,b;
    	cin >> n;
    	int answer[50000];
    	cin >> a >> b;
    	int aa = a.length(), bb = b.length(),nn=n.length();
    		for (int i = 0; i < nn-bb; i++)
    			b = "0" + b;
    		for (int i = 0; i < nn-aa; i++)
    			a = "0" + a;
    	int add = 0;
    	for (int i = a.length()-1; i>=0; i--)
    	{
    		if (n[i] != '0')
    		{
    			answer[i] = ((a[i] - 48) + (b[i] - 48) + add) % (n[i] - 48);
    			add = ((a[i] - 48) + (b[i] - 48) + add) / (n[i] - 48);
    		}
    		else
    		{
    			answer[i] = ((a[i] - 48) + (b[i] - 48) + add) %10;
    			add = ((a[i] - 48) + (b[i] - 48) + add) / 10;
    		}
    	}
    	int count = 0;
    	if (add != 0)cout << add;
    	bool zero = true;
    	for (int i = 0; i < n.length(); i++)
    	{
    		if (add != 0 || answer[i] != 0) 
    		{
    			count++; zero = false;
    		}
    		if (count != 0)cout << answer[i];
    	}
    	if (zero)cout << 0;
    
    }
    
  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12788916.html
Copyright © 2011-2022 走看看