红联Linux门户
Linux帮助

一个算法问题

发布时间:2009-10-05 10:53:03来源:红联作者:wangran51
#include
using namespace std;
void main()
{
int n,k=1,s=0,m;
for (n=1;n<=100;n++)
{ k=1;s=0;
m=n;
while(m)
{k*=m%10;s+=m%10;
m/=10;


}

if(k>s)cout<}


}

哪位神人帮我解释一下这个是怎么实现的。。。。感激不尽
文章评论

共有 5 条评论

  1. wangran51 于 2009-10-12 20:29:55发表:

    5# alick


    精辟!!!!!!拜服

  2. alick 于 2009-10-06 09:16:52发表:

    while(m)
    {k*=m%10;s+=m%10;
    m/=10;


    }
    ----关键是这个循环,k存各位数字之积,s存之和。
    m%10取出m的个位数字,m/10取出除个位外前面的数字。
    注意m是整数,%和/都是整数运算就是了。

  3. wangran51 于 2009-10-06 09:00:31发表:

    3# zha2530


    冲掉是肯定啊,我就是不太理解怎么能实现出来 每位数的成绩大于每位数和打得数

  4. zha2530 于 2009-10-05 13:35:46发表:

    int main()
    {

    int n,k,s,m;

    for (n=1; n<=100; n++)

    {

    k=1;

    s=0;

    m=n;

    while(m)

    {


    k *= m % 10;

    s += m % 10;

    m /= 10;

    }
    --------------
    for循环里面的k = 1;s = 0; 导致没有任何输出,在每次进for之后,k,s前面的值都会被冲掉

  5. suowenair 于 2009-10-05 12:38:02发表:

    [i=s] 本帖最后由 suowenair 于 2009-10-5 12:52 编辑 [/i]