博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO Section1.3 Prime Cryptarithm 解题报告
阅读量:5112 次
发布时间:2019-06-13

本文共 2077 字,大约阅读时间需要 6 分钟。

    crypt1解题报告 —— icedream61 博客园(转载请注明出处)

------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  用给出的N个数字,替换以下竖式,能生成多少个正确的竖式?
  * * *
  x * *
  -------
  * * *
  * * *
  -------
  * * * *
  输入文件,第一行N表示有N个数字,第二行给出所有数字(空格分割。)
【数据范围】
  所有数字∈{1,2,3,4,5,6,7,8,9}
【输入样例】
  5
  2 3 4 6 8
【输出样例】
  1
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  竖式中,只要知道乘数和被乘数,就可以计算出下面三个结果。
  因此,只要枚举这两个数就好,一共5位,9^5<100000,一定没问题。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  一遍AC。
  样例一开始本机测试没过,原因是乘出来的三个结果没判断位数是否正确。可以说,还是读题不够严谨仔细。

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

1 /* 2 ID: icedrea1 3 PROB: crypt1 4 LANG: C++ 5 */ 6  7 #include 
8 #include
9 using namespace std;10 11 int N,D[10];12 bool have[10];13 14 bool ok(int num)15 {16 while(num)17 {18 if(!have[num%10]) return false;19 num/=10;20 }21 return true;22 }23 bool ok(int A,int B,int C,int D,int E)24 {25 int i = A*100+B*10+C;26 int j = D*10+E;27 int x = i*E; if(x<100 || x>999) return false;28 int y = i*D; if(y<100 || y>999) return false;29 int z = x+y*10; if(z<1000 || z>9999) return false;30 return ok(x) && ok(y) && ok(z);31 }32 33 int main()34 {35 ifstream in("crypt1.in");36 ofstream out("crypt1.out");37 38 in>>N;39 for(int i=1;i<=N;++i) { in>>D[i]; have[D[i]]=true; }40 41 int s=0;42 for(int a=1;a<=N;++a)43 for(int b=1;b<=N;++b)44 for(int c=1;c<=N;++c)45 for(int d=1;d<=N;++d)46 for(int e=1;e<=N;++e)47 if(ok(D[a],D[b],D[c],D[d],D[e])) ++s;48 out<
<

 

转载于:https://www.cnblogs.com/icedream61/p/4323271.html

你可能感兴趣的文章
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>
幸运转盘v1.0 【附视频】我的Android原创处女作,请支持!
查看>>
UseIIS
查看>>
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
人与人之间的差距是从大学开始的
查看>>