| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1893 人关注过本帖
标题:求1到n 的连乘积 的问题 一直不过哦
只看楼主 加入收藏
qxw1996
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-7-19
收藏
 问题点数:0 回复次数:9 
求1到n 的连乘积 的问题 一直不过哦
#include<iostream>
using namespace std;
int main()
{
    cin>>n;
    s=0;
    for(i=1;i<=n-1;i=i+1)
    {
                         if(n %i==0)         
                         s=s+i;
    )
      cout<<s;
      system("pause");
      return 0;
}

http://218.5.5.242:9015/JudgeOnline/showproblem?problem_id=1116

帮忙看看啊。谢谢了。
搜索更多相关主题的帖子: 乘积 
2009-07-19 22:20
zhqer
Rank: 2
等 级:论坛游民
帖 子:12
专家分:18
注 册:2008-8-21
收藏
得分:0 
楼主要连乘还是连加啊,还有cin>>n之前要先声明n啊。
2009-07-19 23:03
zhqer
Rank: 2
等 级:论坛游民
帖 子:12
专家分:18
注 册:2008-8-21
收藏
得分:0 
int main(void)
{
    int n;
    long sum = 1;
    cout << "请输入n:";
    cin >> n;
    for (int i = 2; i <=n; ++i)
        sum *= i;

    cout << "1到" << n << "的连乘结果是" << sum << endl;

    return 0;
}
这个比较粗糙的,应该还要对n进行验证等等工作,留给楼主了
2009-07-19 23:07
rainbowpurpl
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2009-7-3
收藏
得分:0 
楼上正解,但这个只能N较小时实现,当N比较大时会出现错误,因为积很容易造成long sum溢出
2009-07-20 10:47
dr0526
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-7-20
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{   double n;
    cin>>n;
    double s=0;
    for(double i=1;i<=n-1;i=i+1)
    {
       if(n %i==0)
       s=s+i;
  }
      cout<<s;

      return 0;
}
2009-07-20 21:26
dr0526
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-7-20
收藏
得分:0 
#include<iostream>
using namespace std;
int main()
{   int n;
    cin>>n;
    int s=0;
    for(int i=1;i<=n-1;i=i+1)
    {
       if(n %i==0)
       s=s+i;
  }
      cout<<s;

      return 0;
}
上一解有问题 你试一下这个
2009-07-20 21:29
谁是王者
Rank: 2
等 级:论坛游民
帖 子:211
专家分:92
注 册:2009-3-3
收藏
得分:0 
----------
用数组来算可以防止溢出。。。。。
2009-07-21 09:09
谁是王者
Rank: 2
等 级:论坛游民
帖 子:211
专家分:92
注 册:2009-3-3
收藏
得分:0 
这是二的100次方的程序稍微改下就好
#include <stdio.h>
void main()
{
    int s[100]={1};  /*初始化第一位为0,其它每一位为0*/
    int i,j,m=0;     /*m指示最高位为s[m]*/
    for(i=1;i<=100;i++)
    {
        for(j=0;j<=m;j++)
            s[j]*=2;
        for(j=0;j<=m;j++)  /*检查进位*/
            if(s[j]>9)        /*第j位需要进位*/
            {
                s[j+1]+=s[j]/10;
                s[j]%=10;
                if(j+1>m) m=j+1;   /*最高位进位*/
            }
    }
    printf("2^100 = ");
    for(j=m;j>=0;j--)
        printf("%d",s[j]);
    printf("\n");
}
2009-07-21 09:12
明次
Rank: 5Rank: 5
来 自:China
等 级:职业侠客
帖 子:166
专家分:303
注 册:2009-1-11
收藏
得分:0 
学习了...

、明次℡!           QQ:604622530
2009-07-21 13:20
yu5890681yu
Rank: 2
等 级:论坛游民
帖 子:18
专家分:11
注 册:2009-7-22
收藏
得分:0 
回复 8楼 谁是王者
要是在这个代码的基础上改的话好像很麻烦啊..
2009-07-22 15:06
快速回复:求1到n 的连乘积 的问题 一直不过哦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019959 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved