洛谷【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] 树的计数. 这同样也是一道 ...
随机推荐
- 小团队Git协作流程
git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式. 集中式 集中式代码管理的核心是服务器,所有开发者在开始coding之前必须从服务器获取代码,然后开发,最后解决冲突, ...
- 函数的光滑化或正则化 卷积 应用 两个统计独立变量X与Y的和的概率密度函数是X与Y的概率密度函数的卷积
http://graphics.stanford.edu/courses/cs178/applets/convolution.html Convolution is an operation on t ...
- Redis1 介绍和字典
Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(列表).set(集合).zset(sor ...
- 又一次发现Oracle太美之awr相关脚本简介
又一次发现Oracle太美之awr相关脚本简介 大家知道在$ORACLE_HOME/rdbms/admin下,有例如以下的相关脚本(我的环境为11.2.0.4.2): [oracle@rh64 ~]$ ...
- Nodejs课堂笔记-第二课 package.json的作用
本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 上节课,我们打造了一下IDE工具-web storm的显示界面.至少现在回到 ...
- python webserver客户端
1.库 suds库,只能做webserver客户端,轻量化,使用方便.安装使用pip. 2.使用 如有webserver情况如下: url:http://10.110.35.41:8980/wsser ...
- spring mvc实现Restful返回xml格式数据
最近,想在自己的小项目中搭建一个Restful风格的服务接口api,项目用的spring mvc 3,听说spring mvc本身就能十分方便的支持restful的实现,于是查询了下资料,果然非常强大 ...
- [算法]在数组中找到出现次数大于N/K的数
题目: 1.给定一个整型数组,打印其中出现次数大于一半的数.如果没有出现这样的数,打印提示信息. 如:1,2,1输出1. 1,2,3输出no such number. 2.给定一个整型数组,再给 ...
- 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)
1. [代码][JS]代码 <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...
- 记录quick cocos2d-x3.2升级至cocos2d-x3.8
目前为止,quickcocos2d-x没有3.8版本,想用3.8又想用quick,所以只能自己升级了,自己先记录下,防止忘记. cocos2d-x3.8里面有quick framework,而simu ...