USACO crypt1
2019独角兽企业重金招聘Python工程师标准>>>
自己代码的两个失误:
1,既然已经告诉了数字集合是1到9,那么穷举两个乘数就是111~999 和 11~99,没有必要根据用3层循环得出两个乘数
2,没有使用string.h自带的函数sprintf和strchar, 手写判断函数check太繁琐
char c[10],buf[20];
int abc,de,x,y,z;
... ...
sprintf(c,"%d",z); --把z中的数值转化为字符传到c数组中
sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z); --多个数值转化strchr 函数:返回某元素在字符串中位置的指针,不存在则返回NULL,现假定c不存在与数组s中,则 strchr(s,c) == NULL;
来自http://blog.sina.com.cn/s/blog_94146ef20101baow.html
的代码:
# include<stdio.h>
# include<string.h>int main(void)
{//freopen("crypt1.in","r",stdin);//freopen("crypt1.out","w",stdout);char s[20],buf[20],c[10],d[10],e[10];int i,ok,abc,de,x,y,z,count = 0;int a[10],n;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n;i++)s[i] = a[i]+'0';s[i] = '';for(abc=111;abc<=999;abc++){for(de=11;de<=99;de++){x = abc*(de%10);y = abc*(de/10);z = abc*de;sprintf(c,"%d",z);sprintf(d,"%d",y);sprintf(e,"%d",x);if(strlen(c)!=4||strlen(d)!=3||strlen(e)!=3)continue;ok = 1;sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);for(i=0;i<strlen(buf);i++)if(strchr(s,buf[i]) == NULL){ok = 0;break;}if(ok)count++;}}printf("%dn",count);return 0;
}
自己的ugly work,当然也能过:
/*
ID: nenusb1
LANG: C
TASK: crypt1
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int num[10];
int n;int cmp(const void * a, const void * b){return (*(int * )a - *(int * )b);
}int match(int digit){int i;for(i=0; i<n; i++){if(num[i] == digit) return 1;}return 0;
}//数字是否存在于给定集合中
int check(int x){int digit;while(x>0){digit = x%10; if(!match(digit)) return 0;x = x/10;}return 1;
}int main(){freopen("crypt1.in","r",stdin);freopen("crypt1.out","w",stdout);int i,j,k;scanf("%d",&n);for(i=0; i<n; i++){scanf("%d", &num[i]);}//排序 qsort(num,n,sizeof(int),cmp);int prod1, prod2,result; int mul[730];//第一个乘数 int count = 0;//需要事前单独生成第一个乘数for(i=0; i<n; i++){for(j=0; j<n; j++){ for(k=0; k<n; k++){mul[count++] = num[i]*100 + num[j]*10 + num[k]; } } }int solutionCount = 0;for(j=0; j<n; j++){ for(k=0; k<n; k++){for(i=0; i<count; i++){prod1 = num[j] * mul[i];prod2 = num[k] * mul[i]; result = prod2 * 10 + prod1;//超过3位, 循环后面的数字只会更大,所以 break ,注意break 的是for i循环 if ( prod1>999 || prod2>999 || result>9999) { break;}//或 含有非集合中的数字, continue if (!check(prod1) || (!check(prod2)) || (!check(result))) continue;solutionCount++;
// printf("%d : \n",mul[i]);
// printf("%d %d\n", num[j], num[k]);
// printf("%d %d\n", prod1, prod2);
// printf("-----%d-------\n",result);} } } printf("%d\n",solutionCount);return 0;
}
转载于:https://my.oschina.net/kaneiqi/blog/223403
USACO crypt1相关推荐
- 最简单的USACO,没有之一:【USACO题库】1.3.4 Prime Cryptarithm牛式
欢迎收看: 保障电脑安全 拒绝编译错误 DEV-C++题解 今天来看一个炒鸡简单的USACO,没有之一. 题目描述 下面是一个乘法竖式,如果用我们给定的那几个数字来取代*,可以使式子成立的话,我们就叫 ...
- usaco Shaping Regions
这就是usaco 前面的windows area的变形. /* ID:jinbo wu TASK:rect1 LANG:C++ */ #include<iostream> #include ...
- usaco Postal Vans(dp)
是哈密顿回路,然后...就不知道怎么写了 ,以前写过类似的不过情况没这么多也没这么复 usaco training 6.1.1 Postal Vans 题解 标签: usaco training题解d ...
- usaco Beef McNuggets
这两天贼烦,ccf炸了,还有一个烦心事.哎我都不知道自己能不能坚持下去了.马上期末考了.这段时间还是抓紧时间复习吧同时刷usaco的节奏要跟以前一样了,毕竟课少了. 题解: 只要你知道以下的数论结论, ...
- usaco前两章小结
usaco 暑假老师有推荐做但是那个题目太长了,而且·大部分都是废话做起来特别慢,而且当时自己基本上什么都不懂,太难了所以看了题解做了两题就放弃了. 转眼就上学了,因为想学习acm所以就胡乱找题做但是 ...
- usaco ★Fractions to Decimals 分数化小数
★Fractions to Decimals 分数化小数 写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中.例如, ...
- usaco ★Bessie Come Home 回家
★Bessie Come Home 回家 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有 ...
- usaco Sorting a Three-Valued Sequence 三值的排序
一开始想贪心,但是一想这是搜索章节应该用bfs?(为什么这么想看我上一个usaco的题目),,,,,,,,,,结果我贪心做出来了.然后我百度一下了别人做的好像么没人用bfs我不知道可不可以做出来. 思 ...
- usaco Arithmetic Progressions(看了题解)
usaco也开始限时了,这题是搜索加剪枝.剪枝很关键.(哎........怎么才能不看题解解题啊) /* ID: jinbo wu LANG: C++ TASK: ariprog */ #includ ...
最新文章
- Redis 笔记(07)— sorted set 类型(添加、删除有序集合元素、获取分数范围内成员、按score排序、返回集合元素个数)
- mysql 优先队列_深入浅出 MySQL 优先队列(你一定会踩到的order by limit 问题)
- 皮一皮:直男的世界不可揣测!
- 图像的灰度化以及二值图函数
- 产品经理如何晋升为产品总监
- (87)FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计
- Address already in use: bind JVM端口被占用解决方法
- 今天很高兴,据说微软的长春的什么要设立在我们公司
- fedora mysql gui,在RHEL、CentOS及Fedora上安装Drupal 8——开源内容管理系统
- 心理学巨著《影响力》读后总结
- 使用FFMPEG类库分离出多媒体文件中的H.264码流
- 5G商业化进程提速 运营商推进网络智能化转型
- win10本地策略组脚本
- 微信企业付款转账到微信
- web前端网页课程设计大作业 html+css+javascript天津旅游(11页) dw静态旅游网页设计实例 企业网站制作
- xv6 - lab0 - 课程介绍
- css:好看的渐变色_CSS渐变:语法速成课程
- 生活随笔:It外包的佣金、和收入构成情况
- 聚合图床_sojson_v6
- Linux全能终端,Windows全能终端神器MobaXterm