Java教程

【6月挑战算法入门级挑战赛】修炼

本文主要是介绍【6月挑战算法入门级挑战赛】修炼,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

试题描述
修仙小说实在是太吸引人了。在修仙的世界中一般都需要修炼升级。不过据说修仙应该有十一个等级:旋照、开光、融合、心动、灵寂、元婴、出窍、分神、合体、渡劫、大乘。也不知道是不是真的能够修仙,有的时候感觉编程就像在修仙啊。

那么假设,每练一个等级需要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;
}
这篇关于【6月挑战算法入门级挑战赛】修炼的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!