【*】POJ-3899(数论很难)(Lucky Numbers——统计)
来源:互联网 发布:linux samba rpm 下载 编辑:程序博客网 时间:2024/06/05 07:05
转载自:http://hi.baidu.com/billdu/item/c6dda7310196a9f6a8842830
代码如下:
char A[50], B[50];/* 求[1, upper]中后last_length位是last的Lucky Number总数 */ll stat_n(char *upper, char* last, int last_length){ll res = 0; bool minus = false; int len = strlen(upper), i; for (i = 0; i < last_length; i++) { int tt = i + len - last_length; if (upper[tt] > last[i]) break; else if (upper[tt] < last[i]) { minus = true; break; } } if (last_length == 0) for (i = 1; i < len; i++) res += (ll)1 << i; int m = len - last_length;for (i = 0; i < m; i++) { if (upper[i] < '4') break; else if (upper[i] > '4' && upper[i] < '7') { res += (ll)1 << (m - i - 1); break; } else if (upper[i] == '7') res += (ll)1 << (m - i - 1); else if (upper[i] > '7') { res += (ll)1 << (m - i); break; } } if (i == m && minus == false && (m == 0 || upper[m - 1] == '4' || upper[m - 1] == '7')) ++res; return res;}/* 求[1, upper]中反转会超出performer范围的Lucky Number总数 */ll stat_m (char *upper, char *performer){ ll res = 0;char mem[50], *last = &mem[49]; int len = strlen(upper);for (int i = 0; i < len; i++) { if (performer[i] > '7') break; else if (performer[i] == '7') { *(last--) = '7'; } else if (performer[i] > '4' && performer[i] < '7') { *last = '7'; res += stat_n(upper, last, i + 1); break; } else if (performer[i] == '4') { *last = '7'; res += stat_n(upper, last, i + 1); *(last--) = '4'; }else if (performer[i] < '4') { *last = '7'; res += stat_n(upper, last, i + 1); *last = '4'; res += stat_n(upper, last, i + 1); break; } }return res;}int main (){ int T;scanf("%d", &T);while (T--) { scanf("%s %s", A, B); int len = strlen(A); if (A[len - 1] != '0') --A[len - 1]; ll n = stat_n(B, NULL, 0) - stat_n(A, NULL, 0); ll m = stat_m(B, B) + stat_m(A, A); if (len == strlen(B)) m -= stat_m(A, B) * 2; printf("%lld\n", n + m); } return 0;}
- 【*】POJ-3899(数论很难)(Lucky Numbers——统计)
- poj 3899 The Lucky Numbers
- Lucky Numbers(acm)
- POJ 1338 Ugly Numbers(数论)
- POJ 3252 Round Numbers(数论)
- poj-3899-The Lucky Numbers 模拟+数学
- CODEFORCES630C- Lucky Numbers(水题)
- poj 3909 --Lucky numbers(搜索)
- poj 2796 Reduced ID Numbers(简单数论)
- POJ 3292 Semi-prime H-numbers (数论)
- POJ 1995 Raising Modulo Numbers (数论-整数快速幂)
- POJ 2247 && HDU 1058 Humble Numbers(数论)
- POJ 3641 Pseudoprime numbers(费马小定理,快速幂,数论)
- POJ 3292Semi-prime H-numbers(数论)
- hdu 5676 ztr loves lucky numbers(BC——暴力打表+二分查找)
- CodeForces 630 C. Lucky Numbers(水~)
- ztr loves lucky numbers(二分,枚举)
- CodeForces 630C Lucky Numbers(递归)
- linux下如何隐藏进程(ps/top)
- XML解析
- 顺序堆栈
- Go语言入门系列之安装及HelloWorld
- gvim+插件开发,体验
- 【*】POJ-3899(数论很难)(Lucky Numbers——统计)
- 字符串操作
- javabean的继承与反射
- 嵌入式面试题2
- bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
- DHCP Options
- 链式堆栈
- 关于 default-action-ref 的一个BUG
- Boost::asio范例分析 服务端