试题描述
修仙小说实在是太吸引人了。在修仙的世界中一般都需要修炼升级。不过据说修仙应该有十一个等级:旋照、开光、融合、心动、灵寂、元婴、出窍、分神、合体、渡劫、大乘。也不知道是不是真的能够修仙,有的时候感觉编程就像在修仙啊。
那么假设,每练一个等级需要x年,那么整个修炼完成要多少年呢?
输入
输入只有一个正整数x(0 < 0 < 10 ^ 10000)
输出
输出11级总共需要的年数。
输入示例
1000000
输出示例
11000000
啊这……乍一看到,想的是这么简单,但是转瞬一想要用高精度,但是高精乘法有一些细节不好拿捏,所有琢磨了一会……a乘11不就是a乘10+a吗(小学就知道还想这么半天)。
于是变成了高精度加法
#include <iostream> #include <cstring> using namespace std; string str; int a[100000], b[100000]; int lena, lenb; int main() { cin >> str; lena = str.size(); lenb = lena + 1; b[0] = 0; for (int i = 0; i < str.size(); i++) { a[i] = str[str.size() - 1 - i] - '0'; b[i + 1] = a[i]; } int lenc = lenb; int tmp = 0; for (int i = 0; i <= lenc; i++) { b[i] = b[i] + a[i] + tmp; if (b[i] >= 10) { tmp = b[i] / 10; b[i] %= 10; } else tmp = 0; } if (b[lenc] != 0) lenc++; for (int i = lenc - 1; i >= 0; i--) printf("%d", b[i]); cout << endl; return 0; }