生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
来源:互联网 发布:mmd恋爱循环数据 编辑:程序博客网 时间:2024/05/01 04:06
如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小生成元。无解输出0。
输入:
3
216
121
2005
输出:
198
0
1979
分析:
一次性枚举100000内的所有正整数m,标记“m加上m的各个数字之和得到的数有一个生成元是m”,最后查表即可。
代码:
#include<stdio.h>#include<string.h>#define MAXN 100010int s[MAXN];int main() { int i = 0; memset( s, 0, sizeof(s)); for(i = 1; i < MAXN; ++i) { int x = i, y = i; while(y > 0) { x += y % 10; y /= 10;}//i是x的生成元 if(s[x] == 0 || i < s[x]) s[x] = i;//求x的最小生成元 } int m, n; scanf("%d", &m); while(m--) { scanf("%d", &n); printf("%d\n", s[n]); } return 0;}
注意:
if(s[x] == 0 || i < s[x]) s[x] = i; 中 i < s[x], 要判断是否为最小生成元
0 0
- 生成元(Digit Generator,ACM/ICPC Seoul 2005, UVa1583)
- 生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
- 生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
- 最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
- Digit Generator, ACM/ICPC Seoul 2005, UVa1583
- [Digit Generator, ACM/ICPC Seoul 2005, UVA1583]
- UVa1583 - Digit Generator 生成元 (java版本)
- UVA1583 - Digit Generator(生成元,打表)
- 《算法竞赛入门经典2ndEdition 》例题3-5 生成元(Digit Generator, Uva1583)
- UVa1583 - Digit Generator
- UVA1583 - Digit Generator
- uva1583 - Digit Generator
- uva1583-digit generator
- UVA1583 UVALive3355 Digit Generator
- UVA1583 - Digit Generator
- UVa1583-Digit Generator
- Digit Generator—UVa1583
- Digit Generator 生成元(P52) / UVA
- C语言总结(一)
- 配置jdk和tomcat
- 初探设计模式1
- 欢迎使用CSDN-markdown编辑器
- 改变数据库表的显示文本
- 生成元(Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
- Linux Top 命令解析
- Java学习博客
- 金融信息交换协议(FIX)v5.0读书笔记(2)
- AndroidStuido 取消SVN关联
- C++获取windows系统时间的七种方式
- Android设计模式源码解析之Builder模式
- 游戏中接入第三方渠道时 关于meta-data的一些小问题
- VOIP开源资源记录