当前位置: 首页 > article >正文

2021蓝桥杯真题小平方 C语言/C++

问题描述
小蓝发现, 对于一个正整数 n 和一个小于 n 的正整数 v, 将 v 平方后对 n 取余可能小于 n 的一半, 也可能大于等于 n 的一半。

请问, 在 1 到 n−1 中, 有多少个数平方后除以 n 的余数小于 n 的一半。

例如, 当 n=4 时, 1,2,3 的平方除以 4 的余数都小于 4 的一半。

又如, 当 n=5 时, 1,4 的平方除以 5 的余数都是 1, 小于 5 的一半。而 2,3 的平方除以 5 的余数都是 4 , 大于等于 5 的一半。

输入格式
输入一行包含一个整数 n 。

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

样例输入

5

样例输出

2
评测用例规模与约定
对于所有评测用例, 1≤n≤10000 。

运行限制
最大运行时间:1s
最大运行内存: 256M

所需变量
int n;//代表输入的终止条件

int sum = 0;//代表满足此条件的数有多少个

int i;//循环变量

double control;//用于存储n的一半

思路:我们首先要得到n/2将其赋值给control,为什么将control定义为double的目的就是保留这个数一般的比较完整性,因为是小于而不是小于或等于!

double control;
  cin>>n;
  control = n*1.0/2;

得到n/2之后,我们从1开始判断到n-1然后将每个遍历的数都跟control判断一下,如果小于control我们就最终所有总和+1,最终遍历结束我们也就得到了满足条件的所有数!做法如下:

for(i = 1;i<n;i++){
    if((i*i)%n<control){
      sum++;
    }
  }

完整代码如下(编译器是dev,语言是C语言):

#include <iostream>
using namespace std;
int main()
{
  int n,sum = 0,i;
  double control;
  cin>>n;
  control = n*1.0/2;
  for(i = 1;i<n;i++){
    if((i*i)%n<control){
      sum++;
    }
  }
  cout<<sum<<endl;
  return 0;
}

在这里插入图片描述


http://www.kler.cn/a/7727.html

相关文章:

  • STM32单片机CAN总线汽车线路通断检测
  • arm64架构的linux 配置vm_page_prot方式
  • SSE与WebSocket与MQTT
  • Java I/O(输入/输出)——针对实习面试
  • Vue3 -- 项目配置之stylelint【企业级项目配置保姆级教程3】
  • 微信小程序自定义顶部导航栏(适配各种机型)
  • 【Java版oj】day28反转部分单向链表、猴子分桃
  • nginx 逻辑判断if语句使用
  • 【二叉树OJ题(二)】前序遍历中序遍历后序遍历另一颗树的子树二叉树遍历平衡二叉树
  • 精彩回顾 | 平行云亮相LiveVideoStack2022北京站
  • 2023年一个完整的B2B订货网站源码
  • NC65 部门预算DAO类
  • ‘protoc-gen-js‘ 不是内部或外部命令,也不是可运行的程序
  • 在DongshanPI-D1开箱使用分享与折腾记录实现MPU6050数据读取
  • 面向对象编程(基础)8:关键字:package、import
  • 【面试】分库分表15道面试题
  • Python基础(二)
  • 第二章Python序列-列表
  • ROS实践06 自定义消息类型
  • Java基础(一)Java语言概述及入门
  • 【java】java中进制、byte、String转换问题
  • 经济法基础:第二章 会计法律制度
  • QT学习开发笔记(项目实战之智能家居物联 UI 界面开发 )
  • ftp创建虚拟用户【ftp精细化配置】
  • 编译技术-编译优化
  • 打破传统思维:关键词采集与市场调查的完美结合,引领你的行业领先