1210:因子分解

题目1210:因子分解时间限制: 1000 ms 内存限制: 65536 KB提交数: 3307 通过数: 2025【题目描述】输入一个数,输出其素因子分解表达式。【输入】输入一个整数 n (2≤n<100)。【输出】输出该整数的因子分解表达式。表达式中各个素数从小到大排列。(幂次方不算 比如:3^2*5 也是正确)如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。【输入样例】60 【输出样例】2^2*3*5 【来源】No代码#include<iostream> using namespace std; int arr[101]; void dfs(int n,int i) { if (i > n || n == 1) /*边界 因子不包括1 因子不能大于本身*/ return; while (n%i == 0) /*能整除的才是因子*/ { arr[i]++; /*桶排序记录下来 方便输出幂次方...

全排列

【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。【输入】只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。【输出】输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S=s1s2...sk,T=t1t2...tk,则S<T等价于,存在p(1≤p≤k),使得s1=t1,s2=t2,...,sp−1=tp−1,sp<tp成立。【输入样例】abc【输出样例】abcacbbacbcacabcba【来源】No代码示例#include <iostream> using namespace std; int len; int a[10]; void dfs(char str[],int index,char bf[]) { if (index == len) { for (int i = 0; i ...

汉诺塔-图解详细

题目:(如果看过N次的就不用看了 直接跳到题解)汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?题解当盘子只有1个还是老规矩如果只有一个盘就从起始点直接移动到目标点 就算完成 当盘子有2个第一步、首先要把第1个盘子移动到过渡点,才能把第2个盘子移动到目标点。第二步、可以调动第2个盘子移动到目标点。第三步、把过度点上的盘子移动到目标点就完成了。高能预警!!!!当盘子有2个以上其实和之前2个盘子一样,“就三步”可以把3个盘子分成两部分 N和N-1第一步、把第N-1 移动到过度点 至于为什么可以这样移动你先不管(先把这个概念理解,后面就详解) 你就当第1个盘子和第2个盘子合成一个盘子了第二步、把第N个盘子移动到 目标点第三步、把“N-1” 这个 “二合一” 的盘子移动到目标点就好开始详解为...

1198:逆波兰表达式-递归专题

【题目描述】逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) 4的逆波兰表示法为 + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。【输入】输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。【输出】输出为一行,表达式的值。可直接用printf("%fn", v)输出表达式的值v。【输入样例】* + 11.0 12.0 + 24.0 35.0【输出样例】1357.000000代码示例:#include<iostream> #include<algorithm> #include<cstring> #include<stdio.h> using namespace std; double exp() { char str[20]; cin >> str; switch (str[0]) { cas...

无穷分数 -递归专题

同学给的题代码示例:#include<iostream> #include<algorithm> #include<cstring> using namespace std; int n; double grade(double i) { if (i == n + 2) return i; return (i-1)+i / grade(i + 1); } int main() { cin >> n; printf("%.5f", (1 / grade(2.0))); }