UVALive 4225 Prime Bases 贪心
来源:互联网 发布:喝咖啡的利弊 知乎 编辑:程序博客网 时间:2024/04/30 09:02
题目链接:这里
题意:给你一个数,你需要拆成素数因子的形式 比如123 = 1 + 1*2+4*2*3*5
拆成n = a0 + a1* p0 + a2* p0* p1 + a3* p0* p1* p2 + … 的形式
给你一个数,问你怎么拆
解法:
贪心去拆就好了,素数乘积从大到小不断考虑
如果超过就减去就好了
然后不断贪
//UVALive 4225#include <bits/stdc++.h>using namespace std;const int maxn = 30;bool flag[maxn];vector <int> P;stack <int> stk;void pre_deal(){ memset(flag, 0, sizeof(flag)); for(int i = 2; i < maxn; i++){ if(!flag[i]){ P.push_back(i); for(int j = i; j < maxn; j += i){ flag[j] = true; } } }}int main(){ pre_deal(); long long n; while(cin >> n){ if(n == 0) break; long long ans = 1; for(int i = 0; i < P.size(); i++){ ans *= P[i]; } while(!stk.empty()) stk.pop(); long long pre = n; for(int i = P.size()-1; i >= 0; i--){ stk.push(n/ans); n = n%ans; ans /= P[i]; } printf("%lld =", pre); int flag = 1; if(n){ printf(" 1"); flag = 0; } for(int i = 0; i < P.size(); i++){ if(stk.top() == 0){ stk.pop(); continue; } if(!flag){ printf(" +"); } flag = 0; printf(" %d", stk.top()); stk.pop(); for(int j = 0; j <= i; j++){ printf("*%d", P[j]); } } printf("\n"); } return 0;}
0 0
- UVALive 4225 Prime Bases 贪心
- UVALive 4225 Prime Bases(math)
- Prime Bases
- Prime Bases
- UVALive 6912 Prime Switch 状压DP,贪心
- HDU 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu 2964 Prime Bases
- hdu2964-Prime Bases
- hdu 2964 Prime Bases
- HDU 2964 Prime Bases 数论
- hdu 2964 Prime Bases 数论~~
- 杭电 “Prime Bases ”解题报告
- hdu 2964 Prime Bases (数学:算不上太水)
- HDU 2964 Prime Bases(数论)
- HDU 2964 Prime Bases [Ad Hoc]
- Happy Happy Prime Prime UVALive
- UVAlive 2911 Maximum(贪心)
- SSL P2384 2014年初中竞赛试题(南海) 字符串
- 用MyBatis拦截器记录SQL执行时间
- Python3-strip()
- GYM 101147 F.Bishops Alliance(dp+BIT)
- 交换排序
- UVALive 4225 Prime Bases 贪心
- gmapping链接收集
- ACM程序设计题目 Problem M-13
- Sublime Text 设置
- 栈的链式存储结构操作及实现
- POJ
- [oracle]Ubuntu下ORA-27102及ORA-00845错误处理
- 实习 day5
- 剑指Offer 11 数值的整数次方