B ModricWang和数论
时间限制:100ms 内存限制:65536kb
题目描述
给定一个正整数a,对于所有的正整数b,求a%b可能有多少种不同的值?
输入
一个整数a, 1≤a≤1018 1≤a≤1018
输出
一个整数,a%b可能出现的不同的值的个数
输入样例
3
输出样例
3
题目分析
本题是一个数论问题,我们可以通过多写几个数试试,很容易就能找到规律。
a=1 a%1=0,a%2=1 2种结果
a=2 a%1=0,a%3=2 2种结果
a=3 a%1=0,a%2=1,a%4=3 3种结果
a=4 a%1=0,a%3=1,a%5=4 3种结果
a=5 a%1=0,a%2=1,a%3=2,a%6=5 4种结果
a=6 a%1=0,a%4=2,a%5=1,a%7=6 4种结果
...... ....................................................... ............
观察可以发现,当a>2时,a为偶数,结果有a/2+1种;a为奇数,结果有(a+1)/2+1种。
示例代码
#include<cstdio>
int main()
{
long long a;
scanf("%lld",&a);
if(a==1||a==2)
printf("2");
else if(a%2==0)
printf("%lld",a/2+1);
else
printf("%lld",(a+1)/2+1);
}