Euler theorem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 367 Accepted Submission(s): 297
Problem Description
HazelFan is given two positive integers
a,b
, and he wants to calculate
amodb
. But now he forgets the value of
b
and only remember the value of
a
, please tell him the number of different possible results.
Input
The first line contains a positive integer
T(1≤T≤5)
, denoting the number of test cases.
For each test case:
A single line contains a positive integer a(1≤a≤109) .
For each test case:
A single line contains a positive integer a(1≤a≤109) .
Output
For each test case:
A single line contains a nonnegative integer, denoting the answer.
A single line contains a nonnegative integer, denoting the answer.
Sample Input
2 1 3
Sample Output
2 3
Source
计算出数a的取余后的数不同的有多少个
先打表发现规律
打表
/**
by z_guibin
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
int s[1000000];
int main()
{
int t;
int a;
scanf("%d",&t);
while(t--)
{
memset(s,0,sizeof(s));
scanf("%d",&a);
//int num=a/2-1;
int num=0;
for(int i=1;i<=a;i++)
{
s[a%i]=1;
}
for(int i=0;i<=a;i++)
{
if(s[i])
num++;
cout<<num<<endl;
}
return 0;
}
规律出来啦
/**
by z_guibin
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
int main()
{
int t;
int a;
scanf("%d",&t);
while(t--)
{
scanf("%d",&a);
if(a&1)
cout<<(a+1)/2+1<<endl;
else
cout<<a/2+1<<endl;
}
return 0;
}