当前位置: 代码迷 >> C语言 >> [求助]这个VC找了不下15次了..不得以找大家看看
  详细解决方案

[求助]这个VC找了不下15次了..不得以找大家看看

热度:110   发布时间:2006-07-01 16:37:36.0
[求助]这个VC找了不下15次了..不得以找大家看看
1~100之间每位数乘积大于每位之和的数

[此贴子已经被作者于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;
}

----------------解决方案--------------------------------------------------------
  相关解决方案