永发信息网

设m.n为正整数,含有数字m且不能被m整除的n位整数的个数为g,这些数的和为s,计算g和s

答案:3  悬赏:40  手机版
解决时间 2021-01-03 05:54
  • 提问者网友:鼻尖触碰
  • 2021-01-03 01:58
int main()
{int m,n,max=1,min=1,i,x,j,sum=0,count=0;
scanf("%d %d",&m,&n);
for(i=0;i<n-1;i++)
{max=max*10;
min=max;}
max=max*10-1;
for(i=min;i<=max;i++)
{x=i;
for(j=1;j<=n;j++)
{if((x%10)==m)
{if((x%m)!=0)
{sum=sum+i;
count++;
}
}x=x/10;}}
printf("%d %d\n",count,sum);
return 0;
}

哪里有问题,结果不对啊
最佳答案
  • 五星知识达人网友:野慌
  • 2021-01-03 03:09
int main()
{
    int m,n,max=1,min=1,i,x,j,sum=0,count=0;
    scanf("%d %d",&m,&n);
    for(i=0;i<n-1;i++)
    {
        max=max*10;
        min=max;
    }
    max=max*10-1;
    for(i=min;i<=max;i++)
    {
        x=i;
        if(i%m==0)    //先判断是否能被m整除,如果能直接跳过
            continue;
        for(j=1;j<=n;j++)
        {
            if((x%10)==m)
            {
                sum=sum+i;
                count++;
                break;    //符合条件立即跳出循环
            }
            x=x/10;
        }
    }
    printf("\n%d %d\n",count,sum);
    return 0;
}
全部回答
  • 1楼网友:思契十里
  • 2021-01-03 04:14
#include "stdio.h" void main() {   int m, n;   printf_s("enter m = ");   scanf_s("%d", &m);   printf_s("enter n = ");   scanf_s("%d", &n);   // 求出n位整数的上下限   int max = 1, min = 1;   for(int i=0; i
  • 2楼网友:拜訪者
  • 2021-01-03 03:29
for(i=min;i<=max;i++) { x=i; if((x%m)!=0) { for(j=1;j<=n;j++) { if((x%10)==m) { sum=sum+i; count++; } x=x/10; } } }把不能被m整除放在外面判断,否则你的x值在改变,x%m的判断就是错误的,你要么放在外面要么改成i%m
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯