湖南工业大学创新实验室2015年新生赛(一)1003(重开)
A simple problem II
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 34 Accepted Submission(s) : 20
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
嘿嘿,恭喜你,看到了本场比赛最简单的题目!
(友情提示,这题你可千万别
for(i = 0;i <= n;i++) if(i%k==0) ans++;
这样做哦,不然绝对会超时的,ikids除了长的帅,有很多女朋友,还从来不骗人呢!)
废(好)话不多说了,且听题意:
给你一个n,和k,你的任务是输出在0~n里一共有多少个数能够被k整除(如果k在0~n范围内,自然也包括它本身),是不是很简单呢!那就快快AC啊。。说不定现在就有人AC了呢!!
(友情提示,这题你可千万别
for(i = 0;i <= n;i++) if(i%k==0) ans++;
这样做哦,不然绝对会超时的,ikids除了长的帅,有很多女朋友,还从来不骗人呢!)
废(好)话不多说了,且听题意:
给你一个n,和k,你的任务是输出在0~n里一共有多少个数能够被k整除(如果k在0~n范围内,自然也包括它本身),是不是很简单呢!那就快快AC啊。。说不定现在就有人AC了呢!!
Input
输入有多组数据,每一组输入两个整数n和k
其中 1<=n,k<=10^9
其中 1<=n,k<=10^9
Output
输出一个数字ans,代表0~n内有多少个数整除k。
Sample Input
1 1 2 1
Sample Output
2 3
Author
不妨我们考虑多点,[a,b]可以整除的个数
a<0 b<0 (-a)/k-(-b)/k 考虑b是否整除
a<0 b=0 (-a)/k; 加0本身
a<0 b>0 (b)/k+(-a)/k 加0本身
a=0 b>0 (b)/k 加0本身
a>0 b>0 (b)/k-(a)/k 考虑a是否整除
a=0 b=0 0本身
#include<stdio.h> //#include<bits/stdc++.h> #include<string.h> #include<iostream> #include<math.h> #include<sstream> #include<set> #include<queue> #include<vector> #include<algorithm> #include<limits.h> #define inf 0x3fffffff #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long using namespace std; int main() { LL k,a,b; LL ans=0; while(cin>>b>>k) { LL ans=0; a=0; if(a<0&&b<0) { ans+=(-a)/k-(-b)/k; if((-b)%k==0) { ans++; } } else if(a<0&&b==0) { ans+=(-a)/k; ans++; } else if(a<0&&b>0) { ans+=(b)/k+(-a)/k; ans++; } else if(a==0&&b>0) { ans+=(b)/k; ans++; } else if(a>0&&b>0) { ans+=(b)/k-(a)/k; if(a%k==0) { ans++; } } else if(a==0&&b==0) { ans++; } cout<<ans<<endl; } return 0; }