UVa 10560 Minimum Weight
来源:互联网 发布:rite in the rain淘宝 编辑:程序博客网 时间:2024/04/29 09:39
题意:砝码称重1~N,问最少要几个砝码。
思路:很容易得到b[i] = sum[i-1] * 2 + 1。因为sum[i-1]的都是已表示完备的,因此下一个需要多出sum[i-1] + 1。
#include <algorithm>#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <vector>#include <string>#include <queue>#include <stack>#include <cmath>#include <set>#include <map>using namespace std;typedef long long LL;typedef unsigned long long ull;#define mem(a, n) memset(a, n, sizeof(a))#define ALL(v) v.begin(), v.end()#define si(a) scanf("%d", &a)#define sii(a, b) scanf("%d%d", &a, &b)#define siii(a, b, c) scanf("%d%d%d", &a, &b, &c)#define pb push_back#define eps 1e-8const int inf = 0x3f3f3f3f, N = 41 + 5, MOD = 1e9 + 7;LL M = 4e18;int T, cas = 0;LL n, m;int k;ull a[105], b[N], sum[N];void init() { b[0] = 0; b[1] = 1, sum[1] = 1; for(int i = 2; i < N; i ++) { b[i] = 2 * sum[i-1] + 1; sum[i] = sum[i-1] + b[i]; }}int main(){#ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin);// freopen("/Users/acpple/out.txt", "w", stdout);#endif init(); while(scanf("%lld%d", &n, &k), n + k) { ull num = 0; for(int i = 0; i < k; i ++) { scanf("%llu", &a[i]); num = max(num, a[i]); } int tot = lower_bound(sum, sum + N, n) - sum; printf("%d", tot); for(int i = 1; i <= tot; i ++) printf(" %llu", b[i]); puts(""); for(int i = 0; i < k; i ++) { LL cnt = a[i]; int flag = 1; for(int j = tot; j >= 0; j --) { if(cnt == 0) break; if(sum[j] < abs(cnt)) { if(flag) { cnt = b[j+1] - cnt; printf("%llu", b[j+1]); flag = 0; } else { printf("%c%llu", cnt < 0 ? '+' : '-', b[j+1]); if(cnt > 0) cnt -= b[j+1]; else cnt += b[j+1]; } } } puts(""); } } return 0;}
0 0
- UVa 10560 Minimum Weight
- UVA 10560 - Minimum Weight(数论)
- uva 10560 - Minimum Weight(数论)
- 1000. Minimum Weight
- HDOJ 4650: Minimum Average Weight Path
- hdu 4650 Minimum Average Weight Path
- 哈夫曼树的简单编程-Minimum Weight
- hdu 4650 Minimum Average Weight Path
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- Minimum Sum LCM UVA
- uva 10791 - Minimum Sum LCM
- uva 10791 - Minimum Sum LCM
- UVa 10791 - Minimum Sum LCM
- UVA 10791 - Minimum Sum LCM
- UVA 10791 Minimum Sum LCM
- CentOS6.6下安装VMware Tools
- 百度地图API-自定义Lushu
- MyEclipse10采用links安装插件的方法
- Android 多态知识使用实例(一)
- 我国已有1.39亿司机领取10年有效驾照
- UVa 10560 Minimum Weight
- EF下lambda与linq查询&&扩展方法
- HDU5569(动态规划)
- C#字符串数组中含数字时的排序
- extern inline和static inline
- 比亚迪4S店疑旧车翻新 保险杠有老漆
- 方向不对,努力白费(好文章)
- jQuery提交Form表单的正确方式
- IKAnalyzer2012FF_u1.jar IKAnalyzer2012_FF.jar IKAnalyzer2012_FF_hf1.jar含义