CodeForces-1076B Divisor Subtraction 找规律
2024-10-08 17:41:51
题目链接:https://vjudge.net/problem/CodeForces-1076B
题意:
题目要求给定一个数,要求每次减去其最小素因数(既是素数又是其因数),问直到n=0需要做几次运算。
分析:
首先如果n为素数,则其最小素因数就是它本身,故第一次运算n:=n-n即得0,只需要一次运算。当n为偶数时,素因子恒为2,故每次减2直到0,所以运算次数为n/2次,当n为奇数是,首先减一次最小素因子,因为最小素因子一定是奇数,故奇-奇=偶,变为偶数后就按上述做法求得运算次数即可。
总结如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
typedef long long ll;
using namespace std;
ll n; bool prime(ll x) {
for(ll i = ; i <= sqrt(x); i++) {
if(x % i == )
return false;
}
return true;
} ll min_div(ll x) {
for(ll i = ; i < n; i++) {
if(x % i == )
return i;
}
} int main(void) {
while(scanf("%lld", &n) == ) {
if(prime(n)) {
printf("1\n");
continue;
}
else if(n % == ) {
printf("%lld\n", n/);
continue;
}
else {
n -= min_div(n);
printf("%lld\n", n/+);
}
}
}
最新文章
- Oracle安装部署,版本升级,应用补丁快速参考
- Python数据分析笔记目录
- Oracle启动报错ORA-27102解决
- 网页设计之jQuery
- Xcode 提高效率的几个快捷键
- 【转载-pdcxs007】 Windows7配置CTex+Texmaker
- JavaScript标准库之——JSON
- 转帖:用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
- 挖坟之Spring.NET IOC容器初始化
- 第三百二十五天 how can I 坚持
- 10个经典的Java main 方法面试题
- Python之路第三天,基础(3)-set,函数,内置函数,文件,三元运算,lambda
- FPGA开发(1)
- C++ Primer 学习笔记_98_特殊的工具和技术 --优化内存分配
- hdu_2955_Robberies(01背包)
- Android高仿qq及微信底部菜单的几种实现方式
- TCP长连接与短连接的原理及区别
- 小tip:生成一组不重复的随机数(去重的方法)
- 01_Python入门
- JavaScript(第十六天)【BOM基础】