我对模拟的理解: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】 解一元二次方程的烦恼的更多相关文章

  1. LuoguP1619 解一元二次方程的烦恼 题解

    Content 模拟一个系统,给出一个数 \(n\),让你判断是否是素数,如果是合数的话就要质因数分解. 需要注意的几点: 数字超过 \(4\times 10^7\),输出溢出提示. 数字小于 \(2 ...

  2. java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值

    1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...

  3. C语言写解一元二次方程程序心得

    前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍. 首先,先回忆一下一元二次方程的求根公式: 分别读取二次项.一次项和常数项系数并且求出delta ...

  4. 【Java例题】2.8 解一元二次方程

    8.解一元二次方程. 输入一元二次方程的a,b,c三个系数,解一元二次方程 ax^2+bx+c=0,输出两个根 package study; import java.util.Scanner; pub ...

  5. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  6. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...

  7. 用c++解一元二次方程

    解方程 github项目地址 这两天得知初二的表妹学了一元二次方程,听说还不会解,我就想着试试用C语言编写解方程. 一元二次方程 用公式法 这种方法效果很好: #include"funct. ...

  8. if语句解一元二次方程~

    #include<stdio.h>#include<math.h> void main(){  double a,b,c,x1,x2;  printf("请输入a&q ...

  9. 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)

    点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...

随机推荐

  1. java servlet中上传文件的简单实现(基于第三方jar)

    这里的案例使用了两种文件上传的组件.分别介绍 1.使用JSPSmartUpload完成上传 package test_servlet_package; import java.io.File; imp ...

  2. spring jdbcTemplate的CRUD操作

    一.jdbcTemplate准备 1.导入与jdbcTemplate相关的jar包 2.设置数据库信息 3.创建jdbcTemplate对象,设置数据源 二.添加操作 1.代码 2.结果 三.修改操作 ...

  3. picasso设置背景图片

    compile'com.squareup.picasso:picasso:2.5.2' String url = "http://192.168.191.1:8080/b"+(i+ ...

  4. ABAP 面向对象(Object Orientation) OO

    [转自 http://blog.sina.com.cn/s/blog_7c7b16000101bhof.html]在程序中, 对象的识别和寻址是通过对象引用来实现的, 对象引用变量可以访问对象的属性和 ...

  5. CryptoJS加密

    <script type="text/javascript" src="CryptoJS/core.min.js"></script>& ...

  6. surf算法解析

    surf构造的金字塔图像与sift有很大的不同,sift采用的是DOG图像,surf采用的是hessian矩阵行列式近似值图像,hessian矩阵是surf算法的核心,构建hessian矩阵的目的是为 ...

  7. 第11条:用zip函数同时遍历两个迭代器

    核心知识点: (1)内置的zip函数可以平行地遍历多个迭代器. (2)python3中地zip相当于生成器,会在遍历过程中逐次产生元祖.而python2中地zip则是直接把这些元祖完全生成好,并一次性 ...

  8. Spark Structured Streaming框架(4)之窗口管理详解

    1. 结构 1.1 概述 Structured Streaming组件滑动窗口功能由三个参数决定其功能:窗口时间.滑动步长和触发时间. 窗口时间:是指确定数据操作的长度: 滑动步长:是指窗口每次向前移 ...

  9. css3图片过滤效果

    在线演示 本地下载

  10. Entity Framework在Asp.net MVC中的实现One Context Per Request(转)

    上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...