2 条题解
-
3
#include <iostream> using namespace std; long long n; int main() { cin >> n; cout << n << "="; //先输出个n= if(n == 1) { cout << 1 << endl; //加个特判1=1 return 0; } bool flag = false; //判断是否需要加*号的变量 for(int i = 2; ;i++) { if(n == 1) { //结束条件 break; } long long num = 0; //存储幂的变量(i的num次方) while(n % i == 0) { //枚举出他能被多少个i除以 num++; n /= i; } if(num == 0) { //这个数不能除以n(n % i == 0) continue; } if(flag) { cout << "*"; //输出*号 } else { flag = true; //没输出*说明这是第一个i^num,下一个要输出了,将判断是否输出*好的变量设为输出(true为输出,false为不输出) } if(num > 1) { cout << i << "^" << num; //判断num是否不为1,如果不为1则输出i^num continue; } cout << i; //num为1的情况直接输出i } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int n,ma; map<int,int>m; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n; cout<<n<<"="; if (n==1){ cout<<1; return 0; } for (int i=2;i<=sqrt(n);i++){ while (n%i==0){ m[i]++; n/=i; ma=i; } } if (n>1){ m[n]++; ma=n; } for (const auto&it:m){ cout<<it.first; if (it.second>1)cout<<"^"<<it.second; if (it.first!=ma)cout<<"*"; } return 0; }
- 1
信息
- ID
- 1136
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 191
- 已通过
- 66
- 上传者