输入两个整数a(大于等于1且小于等于9)和n(大于等于1且小于等于80),编程求得并输出下面等式的值:
例如:若输入的a为5,n为6,则要计算下面公式的值:

【输入形式】

从标准输入读入整数a和n,两者之间以一个空格分隔。

【输出形式】

在标准输出上输出公式的计算结果。

【样例1输入】

5 6

【样例1输出】

493830

【样例1说明】

输入的a为5,n为6,按照上述公式计算的结果为493830。

【样例2输入】

5 20

【样例2输出】

49382716049382716060

#include <iostream>
using namespace std;
int a[1000], b[1000];
int x, n;
int main()
{
    cin >> x >> n;
    for (int i = 0; i < n; i++)
    {
        a[i] = b[i] = x; //a是被减数,b是用来减的
    }
    int t = n - 1; //记录b中x的个数,就是看看减几个x
    //b不变 a变
    for (int i = 0; i < n; i++) //一共减n次
    {
        for (int j = 0; j < t; j++) //控制b的数量
        {
            if (a[j] - b[j] < 0) //稍微难点的是会有借位
            {
                a[j] = a[j] + 10 - b[j];
                int p = 1;
                while (a[j + p] == 0) //注意可能不只是向前一位借 ,我第一次就是被坑了这
                {
                    a[j + p] = 9;
                    p++;
                }
                a[j + p]--; //最后借的就是前面第一个不是0的数的它
            }
            else
            {
                a[j] = a[j] - b[j];
            }
        }

        // cout << endl;
        t--;
    }
    //防止最前的是0做的标记
    int k = 0;
    for (int i = n - 1; i >= 0; i--)
    {
        if (a[i] != 0)//标记
            k = 1;
        if (k == 0 && a[i] == 0)
            continue;
        cout << a[i];
    }
    return 0;
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐