题目如下;

卡卡西要过10岁生日啦!今年,她特别想要一份与众不同的礼物,那就是一条能在阳光下发出五光十色耀眼光芒的水晶项链。她把这个想法告诉了妈妈。妈妈对卡卡西神秘的一笑,透露道:“邻居芭比阿姨家有个后花园。她的花园里有很多漂亮的水晶珠。可是芭比阿姨从来不会轻易让人进入她的后花园,你必须回答出她提出的问题,才可以进去采集水晶珠……”还没等妈妈说完,卡卡西已经迫不及待的飞奔而去。她来到芭比阿姨家,说明了来意,芭比阿姨乐呵呵的说:“卡卡西,如果你能回答出我的问题,我可以让你进入我的水晶花园。我的问题很简单,给你一个三位数,你要对这个三位数的各位数字的3次方求和,然后再对求出的和中各位数字的3次方求和,如此一直继续下去,判断最后能否得到一个不再变化的固定值。如能得到一个固定值,就告诉我这个固定值;如果不能,则告诉我提示信息“error”。注意了,在求解过程中,若某一次求和得到的值超过3位数,则取该数的低三位继续往下运算……

例如:对于三位数111,则第一次计算应该是1×1×1 + 1×1×1 + 1×1×1=3。第二次应是0×0×0 + 0×0×0 +
3×3×3=27。第三次应是0×0×0 + 2×2×2 + 7×7×7=351。第四次应是3×3×3 + 5×5×5 +
1×1×1=153。第五次应是1×1×1 + 5×5×5 +
3×3×3=153,与第四次结果重合,不再计算,输出固定值153。”亲爱的小朋友们,你也来和卡卡西一起锻炼一下思维吧。

输入格式

一行,一个三位数N(100≤N≤999)。

输出格式

一行,如能得到一个固定值,则输出这个固定值;如不能,输出提示信息“error”。

输入输出样列

输入样例1:复制
111
输出样例1:复制
153
说明

限制:

 40%的数据100≤N≤500。

100%的数据100≤N≤999。

【耗时限制】1000ms 【内存限制】128MB

直接上代码

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std;
int main(){
    int n,sum=0;
    cin>>n;
    for(int i=1;i<=1000;i++){
        n=n%1000;
        int x=n%10;
        int y=n/10%10;
        int z=n/100;
        sum=x*x*x+y*y*y+z*z*z;
        if(sum==n){
            cout<<sum;
            return 0;
        }
        else{
            n=sum;
        }
    }
    cout<<"error";
    return 0;
}
 

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信