题解 P7226 【[COCI2015-2016#3] POT】

· · 题解

本蒟蒻的第005篇题解。

经典回顾P7226

窝觉得这道题并不难,难在难理解,所以让窝来让你重温一下题目描述。

说白了就是给你n个数q[i],把q[i]变成(q[i]/10)^{q[i] \bmod 10}(这个看不懂没关系,下面窝会讲),然后输出\sum_{1}^n q[i](其实就是从q[1]一直加到q[n]然后输出)

窝们以样例为例:

1

212->21^2 1253->125^3

然后问题就变成了21^2+125^3

2

23->2^3 17->1^7 43->4^3 52->5^2 22->2^2

然后问题就变成了2^3+1^7+4^3+5^2+2^2

那么问题来了怎么把q[i]变成(q[i]/10)^{q[i] \bmod 10}呢 (这很明现好吧),让窝们用代码来说一下:

//求q[i]/10的q[i] mod 10次方
b=a%10;
a=a/10;
if(b==0)//b=0时要特判,因为x的0次方等于1
{
    dan++;
}
else
{
    ans=1;

    for(int j=1;j<=b;j++)
    {
        ans*=a;
    }
}

为了保险代码开了unsigned long long(貌似不用?)。

code:

#include <bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int n,a,b;
ull dan,ans;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a);
        b=a%10;
        a=a/10;
        if(b==0)
        {
            dan++;
        }
        else
        {
            ans=1;
            for(int j=1;j<=b;j++)
            {
                ans*=(ull)a;
            }
            dan+=ans;
        }
    }
    cout<<dan;
    return 0;
        撒花✿✿ヽ(°▽°)ノ✿
}

最后管理大大求过&来玩啊&看完辣么辛苦,点个赞吧QAQ