【发布时间】:2016-02-02 15:51:34
【问题描述】:
这是一个关于 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;
}
现在,问题是当我提交我的代码时,我收到了这个回复wrong answer at test 57。所以,如果有人可以帮助我找出问题所在。
【问题讨论】:
-
缩进很差的代码,看起来更像一道数学题而不是 C。
-
- 1018 ≤ a ≤ b ≤ 1018注意负数!模数运算可能会令人惊讶。
标签: c algorithm integer integer-division