问题描述
小蓝发现, 对于一个正整数 n 和一个小于 n 的正整数 v, 将 v 平方后对n 取余可能小于 n 的一半, 也可能大于等于n 的一半。
请问, 在 1 到 n−1 中, 有多少个数平方后除以 n 的余数小于 n 的一半。
例如, 当 n=4 时, 1,2,31,2,3 的平方除以 4 的余数都小于 4 的一半。
又如, 当 n=5 时, 1,41,4 的平方除以 5 的余数都是 1, 小于 5 的一半。而 2,3 的平方除以 5 的余数都是 44 , 大于等于 5 的一半。
输入格式
输入一行包含一个整数 n 。
输出格式
输出一个整数, 表示满足条件的数的数量。
样例输入
5
样例输出
2
评测用例规模与约定
对于所有评测用例,1≤n≤10000 。
运行限制
最大运行时间:1s
最大运行内存: 256M
思考
int 和float数可以直接比较大小,int会强制转换为float型
下面是代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,v;
scanf("%d",&n);
int count=0;
for(v=1;v<n;v++)
{
if(v*v%n<n*1.0/2)
count++;
}
printf("%d\n",count);
// 请在此输入您的代码
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/f22e8f2b1120c5f93d6f852db525fc55.png)