C语言 simple problem

这篇博客介绍了一个程序,用于计算给定的幸运数字在特定的数轴区间内能被整除的次数。程序接收三个参数:幸运数字k、区间的开始值a和结束值b,然后根据区间值的正负情况,快速计算出在这个区间内能被k整除的数字个数。这个算法避免了遍历整个区间,提高了效率。
摘要由CSDN通过智能技术生成

Description

小幸运认为他是一个幸运的人,因为他有一个幸运数字kk,有一天他想测试他的幸运数字在不同的数字区间内的幸运程度。幸运程度定义为在[a,b][a,b]区间内可以整除kk的数字个数,即(n%k=0)。由于小幸运的幸运并不能帮他计算他的幸运程度,他找到了聪明的你。

Input

多组输入,即输入包括多行,每行三个数k,a,b。

1≤k≤10^18

−10^18≤a≤b≤10^18

Output

计算幸福程度并单独一行显示。

Sample Input 1

2 4 8

Sample Output 1

3

Code 

#include<stdio.h>
int main()
{
    long long int k,a,b,count=0;
    while(scanf("%lld%lld%lld",&k,&a,&b)!=EOF&&k>=1&&a<=b)
    {
//为避免超时,应用选择结构,而不是遍历ab之间的数
        long long int i,j;
        count=0;
        i=a/k;
        j=b/k;
        if(a<0&&b<0)
        {
            if(b%k==0)
                count=-i+j+1;
            else
                count=-i+j;
        }
        else if(a<0&&b>=0)
        {
            if(b%k==0)
                count=-i+j+1;
            else
                count=-i+j+1;
        }
        else if(a>=0&&b>=0)
        {
            if(a%k==0)
                count=j-i+1;
            else
                count=j-i;
        }
        printf("%lld\n",count);
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值