这是 Codeforces 上的一个问题,link
求线段[a , b]
上k可整除数的个数。换句话说,您需要找到满足 a ≤ x ≤ b
且 x
可被 k 整除的整数值
.x
的数量
输入:
唯一一行包含三个空格分隔的整数 k
、a
和 b
(1 ≤ k ≤ 1018; -1018 ≤ a ≤ b ≤ 1018)。
输出:
打印所需的数字。
下面是我的源代码:
#include <stdio.h>
#include <stdlib.h>
int count(int k,int a, int b)
{
if(a>b)
return 0;
if(a%k!=0)
return count(k,a+1,b);
return 1+count(k,a+1,b);
}
int main()
{
int k,a,b,counter;
scanf("%d%d%d",&k,&a,&b);
if(k==0)
counter=0;
else
counter=count(k,a,b);
printf("%d",counter);
return 0;
}
现在的问题是,当我提交代码时,我得到了这个回复在测试 57 的错误答案
。所以,如果有人能帮我找出问题所在。
最佳答案
我宁愿使用 for 循环:
for (int i = a; i < b; ++i) {
if ((i % k) == 0) {
printf("%d can be divided by %d\n", i, k);
++counter;
}
}
printf("There are %d numbers divisible by %d between %d and %d\n", counter, k, a, b);
将输出:
-28 can be divided by 7
-21 can be divided by 7
-14 can be divided by 7
-7 can be divided by 7
0 can be divided by 7
7 can be divided by 7
14 can be divided by 7
21 can be divided by 7
28 can be divided by 7
There are 9 numbers divisible by 7 between -30 and 30
如果您输入:7
、-30
、30
关于c - 这段c代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157936/