问题标题: 酷町堂:1282 三次方求和(cubsum)

0
0
已解决
董宇昊
董宇昊
初级启示者
初级启示者

1282   三次方求和(cubsum)经验值:100

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

卡卡西要过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。”亲爱的小朋友们,你也来和卡卡西一起锻炼一下思维吧。

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

111

样例输出 Sample Output

153

数据范围及提示 Data Size & Hint

40%的数据100≤N≤500。
100%的数据100≤N≤999。


0
已采纳
李醒
李醒
新手光能
新手光能

核心代码
    for(int i=1;;i++)
    {
        x=n;
        n=((n%10)*(n%10)*(n%10))+((n/10%10)*(n/10%10)*(n/10%10))+((n/100%10)*(n/100%10)*(n/100%10));
        if(这一个数与上一个数相等)
        {
            退出循环
        }
        
    }

0
0
康曦
康曦
中级光能
中级光能
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<string>
#include<cstdlib>
using namespace std;
//bool f[501];
long long n,m;
int main(){
    /*int n,a[501],cnt=1;
    while(1){
        cin>>n;
        int x,cmt=0;
        if(n==-1) break;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++){
            if(f[i]==false){
                f[i]=true;
                x=a[i];
                for(int j=i+1;j<=n;j++){
                if(!f[j]&&a[j]<=x) {
                    f[j]=true;
                    x=a[j];
                }
            }
            cnt++;
        }
    }
    cout<<cnt<<endl;
    }*/
   int n=1,m,k=99999,f=1,g,a[10001];
   cin>>g;
   while(k--){
    m=1;
    m=(g%10)*(g%10)*(g%10)+(g/10%10)*(g/10%10)*(g/10%10)+(g/100%10)*(g/100%10)*(g/100%10);
    if(m>999) {
        m=m%1000;
    }
       if(m==g) {
        cout<<m;
        f=0;
        break;
       }
       g=m;
   }
   if(f==1) cout<<"error";
}

 

0
黄子扬
黄子扬
初级天翼
初级天翼

水仙花数嘛,判断一下只要不是极端情况直接输出即可,比如:100

0
乔俊驰
乔俊驰
资深守护
资深守护

啊???不是在上课吗

0
0
我要回答