您的位置:首页 > 其它

USACO 1.3.3 Prime Cryptarithm

2016-07-17 14:46 239 查看
题目链接:1.3.3

我用的枚举法,即每产生一组数据就判断是否是所给数字里的.

AC还沾沾自喜,但一看题解,发现自己的代码真low...

在平时练习时,应该追求高效,精炼的代码,这样比赛时才能省出大量时间去做其他题!

/*
ID:wang9621
PROG:crypt1
LANG:C++
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int cnt[11];
bool hash1(int x)
{
while(x)
{
if(!cnt[x%10]) return false;
x /= 10;
}
return true;
}
int main()
{
freopen("crypt1.in","r",stdin);
freopen("crypt1.out","w",stdout);
int n,x;
int count = 0;
scanf("%d",&n);
for(int i = 1;i<=n; i++)
{
scanf("%d",&x);
cnt[x] = 1;
}
for(int i = 100; i<1000; i++)
{
if(hash1(i))
{
for(int j = 10; j<100; j++)
{
if(hash1(j))
{
if(i*j<10000&&i*(j/10)<1000&&i*(j%10)<1000&&hash1(i*(j%10))&&hash1(i*(j/10))&&hash1(i*j))
{
count++;
}
}
}
}
}
printf("%d\n",count);
return 0;
}


高效代码

测试结果

Executing...
Test 1: TEST OK [0.000 secs, 4180 KB]
Test 2: TEST OK [0.000 secs, 4180 KB]
Test 3: TEST OK [0.000 secs, 4180 KB]
Test 4: TEST OK [0.000 secs, 4180 KB]
Test 5: TEST OK [0.000 secs, 4180 KB]
Test 6: TEST OK [0.000 secs, 4180 KB]
Test 7: TEST OK [0.000 secs, 4180 KB]


All tests OK.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: