来源:第十二届蓝桥杯省赛第二场C++A/B组
小蓝发现,对于一个正整数 nn 和一个小于 nn 的正整数 vv,将 vv 平方后对 nn 取余可能小于 nn 的一半,也可能大于等于 nn 的一半。
请问,在 11 到 n−1n−1 中,有多少个数平方后除以 nn 的余数小于 nn 的一半。
例如,当 n=4n=4 时,1,2,31,2,3 的平方除以 44 的余数都小于 44 的一半。
又如,当 n=5n=5 时,1,41,4 的平方除以 55 的余数都是 11,小于 55 的一半。
而 2,32,3 的平方除以 55 的余数都是 44,大于等于 55 的一半。
输入格式
输入一行包含一个整数 nn。
输出格式
输出一个整数,表示满足条件的数的数量。
数据范围
1≤n≤100001≤n≤10000
输入样例:
5
输出样例:
2
AC
#include<stdio.h>
#include<iostream>
using namespace std;
int main(void)
{
int n,b=0;
cin>>n;
for(int i=1;i<n;i++)
{
if(((i*i)%n)*2<n)//避免处理浮点数
b++;
}
cout<<b<<endl;
return 0;
}