自学内容网 自学内容网

[蓝桥杯 2021 省 AB2] 小平方

每日一道算法题之小平方

一、题目描述

题目来源:洛谷

[蓝桥杯 2021 第二轮省赛 A 组 F 题(B 组 G 题)]
小平方小蓝发现,对于一个正整数 n 和一个小于 n 的正整数 v,将 v 平方后对 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。请问,在 1 到 n−1 中, 有多少个数平方后除以 n 的余数小于 n 的一半。例如,当 n=4 时,1,2,3 的平方除以 4的余数都小于 4 的一半。

C++程序要求输入输出格式如下:
输入格式
输入一行包含一个整数 n 。

输出格式
输出一个整数,表示满足条件的数的数量。

二、思路

  思路比较简单,但是上交代码发现并没有通过所有的评测,于是检查问题,发现对于n的一半的处理有问题,n/2是直接向下取整了,不符合题意所说的一半。

三、C++代码

#include<bits/stdc++.h>
using namespace std;

// 小平方

int main(){

     int n;
 cin>>n;
 
 int i=1;
 double half=n/2.0;
 int number=0;
 while(i<n){
  if((i*i%n)<half){
number++;
  }
  i++;
 } 
 
 cout<<number;
   
}

原文地址:https://blog.csdn.net/D_D_zy/article/details/136358080

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!