CF1269A Equation
2024-08-27 19:37:57
CF1269A Equation
题意
要找两个合数,使他们两个的差为\(n\),\(n\)为题目给出的数
思路
我们可以枚举减数\(now\),判断一下是不是质数,如果是质数就让\(now++\),然后用一个数\(tot\)记录被减数,也就是\(now\)加\(n\),判断\(tot\)是不是质数,如果是质数再让\(now++\),如果不是质数我们就找到了答案,因为我们已经保证了\(now\)为合数,所以就可以直接跳出循环输出答案啦~
因为数据范围并不大,所以我们可以直接判断一个数是不是质数,如下
//判断是否为质数,是质数返回1,否则返回0
bool check(int wh) {
if(wh <= 1) return 0;
if(wh == 2) return 1;
for(int i = 2; i * i <= wh; i++) if(wh % i == 0) return 0;
return 1;
}
代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int A = 5e5 + 11;
const int B = 1e6 + 11;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
inline int read() {
char c = getchar(); int x = 0, f = 1;
for( ; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
return x * f;
}
//判断是否为质数,是质数返回1,否则返回0
bool check(int wh) {
if(wh <= 1) return 0; if(wh == 2) return 1;
for(int i = 2; i * i <= wh; i++) if(wh % i == 0) return 0;
return 1;
}
int main() {
int n = read(), now = 2, tot;
while(1) {
if(check(now)) now++;
//判断now是否为质数,如果是质数就++,否则继续判断tot的值
else {
tot = now + n;
if(check(tot)) now++;
//判断tot是否为质数,如果不是质数就可以跳出输出答案了
else break;
}
}
return cout << tot << " " << now << '\n', 0;
}
最新文章
- ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持
- 区间DP lightoj 1422
- ThinkPHP函数详解:F方法(快速缓存方法)
- SPSS数据分析——t检验
- CWebBrowser2获取html的内容
- startup.bat闪退---tomcat环境变量配置中遇到的问题
- NSMutableArray 排序
- Linux Oracle服务启动&;停止脚本与开机自启动
- Kinetic使用注意点--container
- c# 赋值后最后一项数据部分丢失
- 人人网FED CSS编码前端开发规范
- git configuration
- PreTranslateMessage和TranslateMessage区别(转)
- ggplot2 geom设置—散点图
- 6. leetcode 136. Single Number
- Canvas实现3D效果-可旋转的立方体
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
- 《C#并发编程经典实例》学习笔记—2.3 报告任务
- 初窥Java之六
- dhcpsrv:windows系统的优秀开源免费dhcp serve软件