标题:求大神帮忙看看
只看楼主
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
结帖率:66.67%
已结贴  问题点数:20 回复次数:4 
求大神帮忙看看
如果一个整数的因子之和等于它自己,那么我们说这个数字是完形填空数。例如,6 = 1 + 2 + 3和28 = 1 + 2 + 4 + 7 + 14,因此6和28都是完形填空数。现在,您的任务是找到num1和num2之间有多少个完形填空数字(1 <num1,num2 <10000)。
输入包含许多测试用例。第一行是整数N,表示有n个测试用例。接下来的n行中的每一行都具有两个整数num1和num2。
输入 2
输入2 5
输出0
输入5 7
输出1
以下是我的代码
#include<stdio.h>
int main()
{
    int a,b,c,m,n,i,j,k,s;
    while(scanf("%d",&a)!=EOF)
    {
      for(i=1;i<=a;i++)
      {
        c=0;
        scanf("%d %d",&m,&n);
        for(j=m;j<=n;j++)
        {
          s=0;
          for(k=2;k<=j/2;k++)
          {if(j%k==0)s=s+k;}
          if(j==s)c++;
        }
        printf("%d\n",c);
      }
    }
    return 0;
}
我每次输出的结果为0
求大神指点,谢谢
搜索更多相关主题的帖子: 整数 填空 输入 输出 for 
2018-12-22 17:33
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:0 
k初始化应该是k=1

saber,别哭.
2018-12-22 17:49
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
得分:0 
回复 2楼 幻紫灵心
#include<stdio.h>
int main()
{
    int a,b,c,m,n,i,j,k,s;
    while(scanf("%d",&a)!=EOF)
    {
      for(i=1;i<=a;i++)
      {
        c=0;
        scanf("%d %d",&m,&n);
        for(j=m;j<=n;j++)
        {
          s=0;
          for(k=1;k<=j;k++)
          {if(j%k==0)s=s+k;}
          if(j==s)c++;
        }
        printf("%d\n",c);
      }
    }
    return 0;
}
还是输出0
2018-12-22 17:53
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:20 
就只改了k=1,我怎么就是输出2
1
6 28
2

saber,别哭.
2018-12-22 18:09
qcjqcj
Rank: 1
等 级:新手上路
帖 子:31
专家分:8
注 册:2018-11-26
得分:0 
回复 4楼 幻紫灵心
哦,我多改了k<=j,谢谢您!
但是我在oj网交的时候说我超时,您有更好的方法吗
2018-12-22 18:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492219-1-1.html




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

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