洛谷【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] 树的计数. 这同样也是一道 ...
随机推荐
- WinForm开发----关闭window窗体最好的办法
最近有一人问道,如何切换窗体.一想到这,我就想,不就是new一个form,然后就show么? 可是我发现,当你控制某个属性的时候,不是不能控制,只是很麻烦而已.有没有好的办法?当然有,咋办? 最简单最 ...
- J - Max Sum
J - Max Sum Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- PhotoKit详解
Photokit介绍 这篇主要介绍如何通过 Photokit获取数据 photokit.jpg 1,基类 PHObject Photos 框架中的根类PHObject只有一个公开接口 localIde ...
- 【网络与系统安全】关于SSL/TSL协议的分析
前言 TSL协议的前身是由网景(Netscape)公司于1994年研发的安全套接字(Secure Socket Layer)协议.它建立在TCP协议栈的传输层,用于保护面向连接的TCP通信.实际TSL ...
- hdu2563——统计问题
Problem Description 在一无限大的二维平面中,我们做例如以下如果: 1. 每次仅仅能移动一格. 2. 不能向后走(如果你的目的地是"向上",那么你能够向左走, ...
- androidAndroid开发学习--Ionic+Cordova 环境搭建
我们看 Ionic 能给我们提供什么? 一个样式库,你可以使用它 来 装饰你的 HTML 网页 ,看起来 想 移动程序的 界面,什么 header .content.footer.grid.list ...
- ubuntu安装pip和python
安装pip2sudo apt-get install pip 这样安装的是pip2不支持Python3.x,可以使用如下命令安装pip3 sudo apt-get install python3-pi ...
- JETSON TK1 ~ 刷机和克隆固件
1:PC端的ubuntu. 要求必须是正常系统,不可以使用虚拟机.由于烧写过程采用刷机模式,虚拟机刷机易导致刷机问题. 2:驱动包.文件系统和源码下载 1.Driver package(驱动包,相当于 ...
- ARM汇编学习笔记
ARM RISC (Reduced Instruction Set Computers) X86 CISC (Complex Instruction Set Computers) ...
- 《程序员代码面试指南》第三章 二叉树问题 遍历二叉树的神级方法 morris
题目 遍历二叉树的神级方法 morris java代码 package com.lizhouwei.chapter3; /** * @Description:遍历二叉树的神级方法 morris * @ ...