本文主要是介绍UVA-424 Integer Inquiry,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原题链接:
https://vjudge.net/problem/UVA-424#author=Luke
AC代码:
#include <bits/stdc++.h>
using namespace std;int main()
{string num[101];int ans[101] = {0};int t = 0;while (getline(cin, num[t])){if (num[t][0] == '0' && num[t].length() == 1)break;t++;}int maxn = -1;for (int i = 0; i < t; i++){int len = num[i].length();if (maxn < len){maxn = len;}}for (int i = 0; i < t; i++){while (num[i].length() < maxn){num[i] = '0' + num[i];}}int index = 0;for (int i = maxn - 1; i >= 0; i--){for (int j = 0; j < t; j++){ans[index] += int(num[j][i] - '0');}index++;}for (int i = 0; i < maxn; i++){int b = ans[i];if (ans[i] > 9){ans[i] = b % 10;ans[i + 1] += b / 10;}elseans[i] = b;}if (ans[maxn] > 0){maxn++;}for (int i = maxn - 1; i >= 0; i--){cout << ans[i];}cout << endl;return 0;
}
用字符串做,模拟一下加法过程就行了
最后可能有同学会想着进位的事,简单判断多出来的一位就行,不用往后判断,ans数组也不一定每位都只存一个数,最后一位可以存不只一位。不过这仔细想想还是有bug的如果我一直加,加到最后一位超出整型的范围,那岂不是。。。。。估计这题没人会闲着没事搞个这个样例点吧。。。
这篇关于UVA-424 Integer Inquiry的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!