百练 / 2017研究生推免上机考试 A:因子分解
2018-03-18 10:51
253 查看
题目来源:http://noi.openjudge.cn/ch0113/22/
注:百练上已经结束的比赛只能看到题目但不能提交。但其实百练上所有比赛的题目都是openjudge题库里的,因此可以在百度上搜索
“#题目描述文字# site: openjudge.cn”
(site: openjudge.cn表示限定在site:openjudge.cn的站点中查询)在openjudge的其他小组中查到这道题目。申请加入该小组就能提交了。
-----------------------------------------------------
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。样例输入
60样例输出2^2*3*5 -----------------------------------------------------
解题思路
由于最大输入在100以内,故可以手动枚举100以内的质数表。
“质数-幂次”的数据结构用map存储。
-----------------------------------------------------
代码#include<stdio.h>
#include<map>
#include<string>
using namespace std;
static int zhiShu[29] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,57,59,61,67,71,73,77,79,83,87,89,91,97};
int main()
{
int n = 0;
scanf("%d", &n);
map<int,int> fenJie; // 不像java,C++实例化map的时候不要new
map<int,int>::iterator it;
int oldValue = 1;
int i=0;
for (i=0; i<29; i++)
{
while(n%zhiShu[i]==0)
{
n /= zhiShu[i];
fenJie[zhiShu[i]]++; // 不管键值zhiShu[i]在不在map中,都只要这样写就行了,非常方便
}
if(n == 1)
{
break;
}
}
for (it = fenJie.begin(); it!= fenJie.end(); it++)
{
if(it != fenJie.begin())
{
printf("*");
}
printf("%d", it->first);
if(it->second != 1)
{
printf("^%d", it->second);
}
}
return 0;
}
注:百练上已经结束的比赛只能看到题目但不能提交。但其实百练上所有比赛的题目都是openjudge题库里的,因此可以在百度上搜索
“#题目描述文字# site: openjudge.cn”
(site: openjudge.cn表示限定在site:openjudge.cn的站点中查询)在openjudge的其他小组中查到这道题目。申请加入该小组就能提交了。
-----------------------------------------------------
因子分解
-----------------------------------------------------总时间限制: 1000ms 内存限制: 65536kB描述输入一个数,输出其素因子分解表达式。输入输入一个整数 n (2 <= n < 100)。输出输出该整数的因子分解表达式。表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。样例输入
60样例输出2^2*3*5 -----------------------------------------------------
解题思路
由于最大输入在100以内,故可以手动枚举100以内的质数表。
“质数-幂次”的数据结构用map存储。
-----------------------------------------------------
代码#include<stdio.h>
#include<map>
#include<string>
using namespace std;
static int zhiShu[29] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,57,59,61,67,71,73,77,79,83,87,89,91,97};
int main()
{
int n = 0;
scanf("%d", &n);
map<int,int> fenJie; // 不像java,C++实例化map的时候不要new
map<int,int>::iterator it;
int oldValue = 1;
int i=0;
for (i=0; i<29; i++)
{
while(n%zhiShu[i]==0)
{
n /= zhiShu[i];
fenJie[zhiShu[i]]++; // 不管键值zhiShu[i]在不在map中,都只要这样写就行了,非常方便
}
if(n == 1)
{
break;
}
}
for (it = fenJie.begin(); it!= fenJie.end(); it++)
{
if(it != fenJie.begin())
{
printf("*");
}
printf("%d", it->first);
if(it->second != 1)
{
printf("^%d", it->second);
}
}
return 0;
}
相关文章推荐
- 【质因子分解】2017研究生推免上机考试 A:因子分解
- 百练 / 2017研究生推免上机考试 I:月度开销
- 百练 / 2017研究生推免上机考试 C:肿瘤检测
- 百练 / 2017研究生推免上机考试 F:Prime Path
- 百练 / 2017研究生推免上机考试 H: Til the Cows Come Home
- 百练 / 2017研究生推免上机考试 D:回文素数
- 百练 / 2017研究生推免上机考试 G:Eqs
- 百练 / 2017研究生推免上机考试 B:ISBN号码
- 浙大计算机研究生复试上机考试-2010年 最短路径问题
- 又一版 A+B 浙大计算机研究生复试上机考试-2008年
- hdu 3793 浙大计算机研究生保研复试上机考试-2011年
- 【LIS】2017计算机学科夏令营上机考试 E:怪盗基德的滑翔翼
- HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)
- 浙大计算机研究生复试上机考试-2010年 最短路径问题
- 2017计算机学科夏令营上机考试-B题 编码字符串(简单题)
- hdu 3794 浙大计算机研究生保研复试上机考试-2011年
- hdu 4416 水题 浙大计算机研究生复试上机考试-2005年 可是发现自己写代码有问题
- hdu1233浙大计算机研究生复试上机考试(2006)还是畅通工程
- hdu 1881 毕业bg (01背包变形)浙大计算机研究生复试上机考试-2008年
- 浙大计算机研究生复试上机考试-2010年