在C/C++里,我们通常避免除法,因为除法会向下取整,去除小数导致精度的丢失。
#include<iostream>
using namespace std;
int n, res;
int main()
{
cin >> n;
int cnt = 0;
for (int i=1; i < n; i ++)
{
if (i*i % n * 2 < n)
{
cnt ++;
}
}
cout << cnt << endl;
return 0;
}
也可以利用数据类型避免精度的丢失:
#include<iostream>
using namespace std;
int n;
double res;
int main()
{
cin >> n;
res = n*1.0 / 2;
// cout << res << endl;
int cnt = 0;
for (int i=1; i < n; i ++)
{
if (i*i % n < res)
{
cnt ++;
}
}
cout << cnt << endl;
return 0;
}