[此贴子已经被作者于2006-7-1 17:49:56编辑过]
----------------解决方案--------------------------------------------------------
嘿嘿,想一秒钟就可以想出来,给你10000秒
----------------解决方案--------------------------------------------------------
谁帮我再看看啊,小生真的找不出来...拿到C++论坛去...不想放了一下午没一个人回答...所以还是拿回我们C论坛来了
----------------解决方案--------------------------------------------------------
编译没错啊!!
----------------解决方案--------------------------------------------------------
首先sum,product每次进外层循环要初始化
另外这样也可以
for(j=i;j;j/10)
{
n=j%10;
sum+=n;
if(n)
product*=n;
}
----------------解决方案--------------------------------------------------------
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
void main()
{
int i,count,product=1,M,N,j,sum=0;
for(i=100;i>=1;i--)
{ product=1;sum=0;
for(j=2;j>=0;j--)
{
M=i/pow(10,j); //提取最高位
N=M;
if(M=0) //由于只要i中某位数为0,则有一个M为0,那么PRODUCT就为0了,所以要排除M为0的情况
M=1;
product*=M;
sum+=N;
i=i-i/pow(10,j)*pow(10,j); //去掉最高位
}
if(product>sum)
{count++;
cout<<setw(5)<<i<<endl;
if(count%5==0)
cout<<endl;
}
}
}
这样初始化后还是没用啊?
----------------解决方案--------------------------------------------------------
把第二个for全部改成5楼的程序
你那个,就不说了,至少pow的返回值是double.和int一起计算结果还能是int?
这贴不会再回了
----------------解决方案--------------------------------------------------------
楼上的好心人可以解释一下你的方案吗?我刚学C++,看不懂
----------------解决方案--------------------------------------------------------
5楼的算法似乎是死循环哦....
----------------解决方案--------------------------------------------------------
product=1;sum=0;
for(j=i;j;j/=10)
{
n=j%10;
sum+=n;
if(n)
product*=n;
}
----------------解决方案--------------------------------------------------------