洛谷【P1619】 解一元二次方程的烦恼
我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html
题目传送门:https://www.luogu.org/problemnew/show/P1619
写完后我觉得我该告诉大家的第一句话就是:
不要深夜在洛谷写这种蓝色难度的模拟题(当然您如果够神写深蓝色难度的也是体会不到我这种蒟蒻今晚尝到的痛苦的。)
这题写的我真是有一种“日了出题人亲娘”爽快的感觉
换行就是这题最难的模拟,一下要换,一下不要换,特殊情况要特判。
然后判质数和分解质因数应该是入门选手都会的了,因为数字不大,所以可以根号\(n\)求法,不需要线性筛质数。
反正这题挺\(fake\)的,我一开始看完题目觉得今晚\(10\)点就可以睡觉了,然后就从\(21:50\)一直\(Wa\)到了\(22:41\)才\(A\)掉\(emmm\)
还有一句劝:不管写什么题都应该先想清楚再动手,不要觉得自己好像可以\(A\)就莽莽撞撞的开了,在码代码的过程中如果漏想了什么思路后面可能会很难想到。如果依靠数据发现了自己漏想的情况改起来也不如一开始就想到那种情况那么简单。而且万一在大型比赛遇到这种情况然后官方给的大数据比较水,那么你可能会以为自己\(A\)了然后开开心心的玩了几天然后就发现自己爆零了…………
总之,希望自己和大家都不要再有这种情况了吧。\(OI\)有风险,开码需谨慎。
时间复杂度:\(O(n+\sqrt{n})\)
空间复杂度:\(O(n)\)
代码如下:
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
#define ll long long
int top;
char s[25154];//25154是某人学号emmm
int pri[100],sum[100];
bool ispri(ll x) {
if(x==1)return 0;//1特判
for(int i=2;i<=trunc(sqrt(x));i++)
if(x%i==0)return 0;//sqrt(x)复杂度判质数
return 1;
}
void check(ll x) {
top=0;ll num=x;
if(x<2)return;
for(int i=2;i<=trunc(sqrt(x));i++) {
if(num%i==0&&ispri(i)) {
pri[++top]=i;sum[top]=0;
while(num%i==0)
num/=i,sum[top]++;
}
if(num%(x/i)==0&&ispri(x/i)) {
pri[++top]=x/i;sum[top]=0;
while(num%(x/i)==0)
num/=(x/i),sum[top]++;
}//记得要判即使质数又是因数才能算
}
}
int main() {
while(1) {
gets(s);//数字之间可以插入各种符号,包括空格,scanf直接挂。
int len=strlen(s);ll num=0;//就算num>4e7也要判负数,所以必须用long long存下来
printf("Enter the number=\n");
for(int i=0;i<len;i++)
if(s[i]>='0'&&s[i]<='9')num=(num<<1)+(num<<3)+s[i]-'0';
if(!num)break;
printf("Prime? ");
if(ispri(num))puts("Yes!");else puts("No!");
if(num>4e7) {
printf("The number is too large!\n\n");//记得每一组数据之间都有一个空格,所以要换两次行
continue;
}check(num);//分解质因数
for(int i=1;i<=top;i++) {
if(i==1)printf("%lld=",num);
printf("%d^%d",pri[i],sum[i]);
if(i!=top)printf("*");
if(i==top)puts("");//记得换行,这题恶心就恶心在换行
}
printf("\n");//还要换行,至于哪里要换行哪里不要自己可以好好想想
}
return 0;
}
洛谷【P1619】 解一元二次方程的烦恼的更多相关文章
- LuoguP1619 解一元二次方程的烦恼 题解
Content 模拟一个系统,给出一个数 \(n\),让你判断是否是素数,如果是合数的话就要质因数分解. 需要注意的几点: 数字超过 \(4\times 10^7\),输出溢出提示. 数字小于 \(2 ...
- java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值
1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...
- C语言写解一元二次方程程序心得
前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍. 首先,先回忆一下一元二次方程的求根公式: 分别读取二次项.一次项和常数项系数并且求出delta ...
- 【Java例题】2.8 解一元二次方程
8.解一元二次方程. 输入一元二次方程的a,b,c三个系数,解一元二次方程 ax^2+bx+c=0,输出两个根 package study; import java.util.Scanner; pub ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- c语言解一元二次方程
C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...
- 用c++解一元二次方程
解方程 github项目地址 这两天得知初二的表妹学了一元二次方程,听说还不会解,我就想着试试用C语言编写解方程. 一元二次方程 用公式法 这种方法效果很好: #include"funct. ...
- if语句解一元二次方程~
#include<stdio.h>#include<math.h> void main(){ double a,b,c,x1,x2; printf("请输入a&q ...
- 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...
随机推荐
- intellij idea pycharm phpstorm webstorm 使用 FiraCode 作为编程字体,更新后字符乱码问题解决
先说使用下载 传送门 https://pan.baidu.com/s/1OI-novVYy-C74HIUfr9E6w windows: 1.下载后打开ttf文件夹,选择所有右键安装. 2.或者使用ch ...
- 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群
from https://my.oschina.net/ososchina/blog/856678 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...
- SELinux状态修改
查看SELinux状态: 1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态 SELinux status: ...
- python login form
import time from selenium import webdriver browser = webdriver.Chrome() wait_time = 1 USER = 'xl.fen ...
- 【网络与系统安全】20179209 wireshark和nmap实验
TCP三次握手包 在进行实验前,先梳理一遍TCP三次握手的过程,这个图是我本科学网络时画过不少于十遍的图,我觉得非常有纪念意义. 稍作解释,第一次握手,客户端发起请求连接,发送一个标志位为SYN的ip ...
- 使用微软官方U盘制作软件来安装纯净版windows
第一步:下载一个制作U启的工具;windows-usb-dvd-download-tool 微软官网:https://www.microsoft.com/en-us/download/windows- ...
- html_dom类读取
上传类文件以后,有三种方式调用这个类:从url中加载html文档从字符串中加载html文档从文件中加载html文档 复制代码 代码如下: <?php// 新建一个Dom实例$html = new ...
- LeetCode:算法特辑——二分搜索
LeetCode:算法特辑——二分搜索 算法模板——基础 int L =0; int R =arr.length; while(L<R) { int M = (R-L)/2+L; if(arr[ ...
- Scala window下安装
第一步:Java 设置 检测方法前文已说明,这里不再描述. 如果还为安装,可以参考我们的Java 开发环境配置. 接下来,我们可以从 Scala 官网地址 http://www.scala-lang. ...
- Python 列表解析list comprehension和生成表达式generator expression
如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析(List comprehensions)和生成表达式(generator expression) (1)list ...