天天看點

變種水仙花-c++

題目描述

變種水仙花數 - Lily Number:把任意的數字,從中間拆分成兩個數字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分後的乘積之和等于自身,則是一個Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1461 + 1461 + 146*1

求出 5位數中的所有 Lily Number。

輸入描述:

輸出描述:

一行,5位數中的所有 Lily Number,每兩個數之間間隔一個空格。

OJ代碼(一)

#include<iostream>
using namespace std;
int main ()
{
    long sum1,sum2,sum3,sum4,sum5;
    for(long i=10000;i<=99999;i++)
    {
    	sum1=(i/10)*(i%10);
    	sum2=(i/100)*(i%100);
    	sum3=(i/1000)*(i%1000);
    	sum4=(i/10000)*(i%10000);
    if(i==sum1+sum2+sum3+sum4)
        cout<<i<<" ";
    }
}
           

錯誤代碼

#include<iostream>
using namespace std;
int main ()
{
    int sum;
    for(int i=10000;i<=99999;i++)
    {
     sum=i/10*i%10+i/100*i%100+i/1000*i%1000+i/10000+i%10000;
     **//錯誤原因:計算過程中i發生了變換**
    if(i==sum)
        cout<<sum<<" ";
    }
}
           

OJ代碼(二)

#include<iostream>
using namespace std;
int main ()
{
    int sum;
    for(int i=10000;i<=99999;i++)
    {
    	int sum=0,mod=10000,cur=i;
    	//當mod/10=0時退出循環
    	while(mod/10)
    	{
    		sum+=(cur/mod)*(cur%mod);
    		mod/=10;
		}
	if(sum==i)
	cout<<i<<" ";
    }
}
           

繼續閱讀