Content

模拟一个系统,给出一个数 \(n\),让你判断是否是素数,如果是合数的话就要质因数分解。

需要注意的几点:

  • 数字超过 \(4\times 10^7\),输出溢出提示。
  • 数字小于 \(2\),输出 No! 之后直接进入下一次操作。
  • 数字是合数,则进行质因数分解,分解后的格式为x=x_1^a_1*x_2^a_2*...,其中 \(x_i\) 为这个数从小到大第 \(i\) 个质因子,\(a_i\) 为第 \(i\) 个质因子的指数。
  • 输出中会有各种友情提示和换行,请注意每一个细节。

数据范围:\(n\leqslant 4\times 10^7\)。

Solution

这道题目实质上是不难的,至于为什么评为蓝题,个人认为是这恶心的输出方式吧。

在这里给大家总结几点吧——

  • 要在输出完Enter the number=之后换行,不然满屏都是 \(\texttt{WA}\)。原因是第一行太长。
  • 要在每个数据之间空一行,不然也会有大面积的 \(\texttt{WA}\)。原因是在某一行会太长(这也就说明了本题的评测方式是逐行比对,且不忽略多余的空格、换行和制表符)。
  • Prime?之后一定要有一个空格!
  • 没有数字直接退出,不需要再输出多余的东西。
  • 数字溢出,输出完溢出提示后直接进入下一个操作,不需要再输出多余的东西。
  • 注意不需要再质因数分解中多出一些空格,诸如15 = 3 ^ 1 * 5 ^ 1等。

注意以上这几点,这道题目就不算难了。

Code

//注意这里省略了头文件
using namespace std; bool judge(int x) {
for(int i = 2; i <= floor(sqrt(x) + 0.5); ++i)
if(!(x % i)) return 0;
return 1;
}
void divide(int x) {
int flagone = 1;
for(int i = 2; i <= x; ++i)
if(!(x % i)) {
int cimi = 0;
while(!(x % i)) {
cimi++;
x /= i;
}
if(flagone) flagone = 0;
else printf("*");
printf("%d^%d", i, cimi);
}
} int main() {
while(1) {
printf("Enter the number=\n");
int num = 0, flag = 0, yichu = 0;
string sa;
getline(cin, sa);
int len = sa.size();
for(int i = 0; i < len; ++i) {
if(sa[i] >= '0' && sa[i] <= '9') {
flag = 1;
num = num * 10 + sa[i] - '0';
}
if(num > 40000000) {
printf("Prime? No!\nThe number is too large!\n\n");
yichu = 1;
break;
}
}
if(!flag) break;
if(yichu) continue;
printf("Prime? ");
if(num < 2) {
printf("No!\n\n");
continue;
}
if(judge(num)) {
printf("Yes!\n\n");
continue;
} else {
printf("No!\n%d=", num);
divide(num);
puts("\n");
}
}
}

LuoguP1619 解一元二次方程的烦恼 题解的更多相关文章

  1. 洛谷【P1619】 解一元二次方程的烦恼

    我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P16 ...

  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. c语言解一元二次方程

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

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

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

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

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

  8. 解一元二次方程的C++实现

    一元二次方程的根的情况分为实根与虚根两种,代码如下 #include<iostream> #include<cmath> using namespace std; float ...

  9. 利用离散 Fourier 变换解一元二次方程

    设二次方程$$x^2+bx+c=0$$的两个根分别为 $x_1,x_2$.则$$(x-x_1)(x-x_2)=x^2+bx+c.$$因此$$\begin{cases}  x_1+x_2=-b\\x_1 ...

随机推荐

  1. 力扣 - 剑指 Offer 10- I. 斐波那契数列

    题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n ...

  2. xml的语法规则

    XML 文档必须有根元素 XML 文档必须有关闭标签 XML 标签对大小写敏感 XML 元素必须被正确的嵌套 XML 属性必须加引号 针对元数据的 XML 属性 有时候会向元素分配 ID 引用.这些 ...

  3. LOJ #2769 -「ROI 2017 Day 1」前往大都会(单调栈维护斜率优化)

    LOJ 题面传送门 orz 斜率优化-- 模拟赛时被这题送走了,所以来写篇题解( 首先这个最短路的求法是 trivial 的,直接一遍 dijkstra 即可( 重点在于怎样求第二问.注意到这个第二问 ...

  4. Codeforces 1392I - Kevin and Grid(平面图的欧拉定理+FFT)

    Codeforces 题面传送门 & 洛谷题面传送门 模拟赛考到一道和这题有点类似的题就来补了 神仙 GLBR I %%%%%%%%%%%%%%%%%%%% 不过感觉见过类似的题目之后就比较套 ...

  5. 通过mac地址确认二层交换机某个端口下接的终端设备IP

    正常来说,二层交换机主要是通过mac地址进行通信的,这就导致我们无法直接通过arp表来确认交换机端口下终端设备的IP: 但我们仍然能通过查找二层交换机端口下学习到的mac地址,然后通过对照三层核心交换 ...

  6. 44-Count and Say

    Count and Say My Submissions QuestionEditorial Solution Total Accepted: 79863 Total Submissions: 275 ...

  7. EXCEL-COUNTIF()统计符合区间上的值个数

    =COUNTIF(D9:D21465,"<-0.2")+COUNTIF(D9:D21465,">0.2")  #计算<-0.2或者>0. ...

  8. Webpack 打包 Javascript 详细介绍

    本篇我们主要介绍Webpack打包 Javascript.当然,除了可以打包Javascript之外,webpack还可以打包html.但是这不是我们本篇的重点.我们可以参考 Webpack HTML ...

  9. account, accomplish, accumulate

    account account从词源和count(数数)有关,和computer也有点关系.calculate则和'stone used in counting'有关.先看两个汉语的例子:1. 回头再 ...

  10. Gradle插件详解

    参考[1]Gradle 插件       [2]修改 Gradle 插件(Plugins)的下载地址(repositories)