timus 1095 Nikifor 3【思路】
来源:互联网 发布:开源php cms 微信 编辑:程序博客网 时间:2024/06/18 13:52
传送门:timus 1095
题意:给出一个数字(可能是大数),其中1,2,3,4每个数至少出现一次,将大数数字重新排列,输出一个能被7整除且不以0为前缀的结果,如果没有,则输出0
思路:
利用1,2,3,4至少出现一次的信息先枚举一下他们的组合mod7的情况,因为所有整形数mod7结果只能出现7种情况
7是一个不一般的数啊 不一般体现在这里
( 10%7=3
20%7=6
30%7=2;
40%7=5;
50%7=1;
60%7=4;)
这个可以先通过写测试代码来模拟相应的结果
int i,j,k,h,sum; bool map[7]; //标记是否已有满足条件的数 char comb[7][10]; memset(map,false,sizeof(map)); for(i=1;i<=4;i++) for(j=1;j<=4;j++) for(k=1;k<=4;k++) for(h=1;h<=4;h++) if(i!=j&&i!=k&&i!=h&&j!=k&&j!=h&&k!=h){ sum=i*1000+j*100+k*10+h; if(map[sum%7]==false){ map[sum%7]=true; comb[sum%7][0]=i; comb[sum%7][1]=j; comb[sum%7][2]=k; comb[sum%7][3]=h; comb[sum%7][4]='\0'; } } for(i=0;i<7;i++){ if(map[i])printf("mod7余%d:%s\n",i,comb[i]); }输出发现0~6都有对应的comb值
这说明什么?尽在不言中!
前缀不能为0,那把所有0安排在最后面
1,2,3,4每个数留一个做最后的判断,
像 11112345670
就可以先求出111567的余数,把0放到最后(嗯,看到这里应该不用再说下去了,已经显而易见该怎么弄了吧!)
是不是可以再把题目改编一下,如果输出结果是大数能被9整除呢?
(这个应该是更简单的!呼呼,比较杂乱的推理)
0 0
- timus 1095 Nikifor 3【思路】
- Ural 1095 Nikifor 3 数论
- Nikifor 3(ural 1095)
- URAL 1095 Nikifor 3 (注意读题)
- timus 1204. Idempotents【思路】
- timus 1136 Parliament(思路过程)
- timus 1547. Password Search【题意思路+大数模板】
- URAL 1130 Nikifor's Walk
- timus 1017
- timus 1073
- 【Ural1041】Nikifor【拟阵】【线性无关】【高斯消元】【矩阵的秩】
- timus 1211. Collective guarantee
- Timus 1225. Flags dp
- timus graph theory
- [timus] 1020. Rope
- [timus] 1319. Hotel
- timus 1005 stone pile
- timus 1073 Square Country
- 【2014 年末岁首】
- How to Check if an Array Contains a Value in Java Efficiently?
- 校招:Vobile阜博通2015校园招聘
- 字符设备驱动
- 华为机试—替换字符串中的字母
- timus 1095 Nikifor 3【思路】
- Mysql-05-02_Insert,update,delete详解
- 类型编码(Type Encodings)
- IBM Synapse
- 企业级Hadoop 2.x入门系列之九Hadoop核心配置文件的默认配置解读
- Win下Eclipse提交Hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=D
- 企业级Hadoop 2.x入门系列之十MapReduce 程序相关日志
- 运行时版本与平台(Runtime Versions and Platforms)
- Collection集合分析