您的位置:首页 > 其它

HDU 6124 Euler theorem(数论)

2017-09-28 10:24 447 查看
Description

给定一非负整数a,问a%b有多少种可能取值

Input

第一行一整数T表示用例组数,每组用例输入一整数a(1≤T≤5,1≤a≤109)

Output

输出a%b有多少种取值

Sample Input

2

1

3

Sample Output

2

3

Solution

一.b>a时,a%b=a

二.1≤b≤a时,假设a%b=c

1.若0≤c<⌊a+12⌋,取b=a−c>c即可

2.若⌊a+12⌋≤c<a,设a=kb+c,则k≥1,而a=kb+c>(k+1)c≥2c≥a

故ans=⌊a+12⌋+1

Code

#include<cstdio>
using namespace std;
int T,n;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",(n+1)/2+1);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: