题目描述
小蓝发现,对于一个正整数 �n 和一个小于 �n 的正整数 �v,将 �v 平方后对 �n 取余可能小于 �n 的一半,也可能大于等于 �n 的一半。
请问,在 11 到 �−1n−1 中, 有多少个数平方后除以 �n 的余数小于 �n 的一半。
例如,当 �=4n=4 时,1,2,31,2,3 的平方除以 44 的余数都小于 44 的一半。
又如,当 �=5n=5 时, 11,44 的平方除以 55 的余数都是 11,小于 55 的一半。而 22,33 的平方除以 55 的余数都是 44, 大于等于 55 的一半。
输入格式
输入一行包含一个整数 �n 。
输出格式
输出一个整数,表示满足条件的数的数量。
代码如下:
#include<bits/stdc++.h>
#define int long long
#define LL_int 128
using namespace std;
int n;
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
int ans=0;
for(int i=1;i<n;i++){
int a;
a=(i*i)%n;
if(a<(n/2.0)){
ans++;
}
}
cout<<ans;
return 0;
}