USER: tianbing tianbing [tbbd4261]
TASK: crypt1
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.011 secs, 2928 KB]
Test 2: TEST OK [0.011 secs, 2928 KB]
Test 3: TEST OK [0.022 secs, 2928 KB]
Test 4: TEST OK [0.000 secs, 2928 KB]
Test 5: TEST OK [0.000 secs, 2928 KB]
Test 6: TEST OK [0.011 secs, 2928 KB]
Test 7: TEST OK [0.011 secs, 2928 KB]
All tests OK.
YOUR PROGRAM ('crypt1') WORKED FIRST TIME! That's fantastic
-- and a rare thing. Please accept these special automated
congratulations.
Here are the test data inputs:
------- test 1 -------
5
2 3 4 6 8
------- test 2 -------
4
2 3 5 7
------- test 3 -------
1
1
------- test 4 -------
7
4 1 2 5 6 7 3
------- test 5 -------
8
9 1 7 3 5 4 6 8
------- test 6 -------
6
1 2 3 5 7 9
------- test 7 -------
9
1 2 3 4 5 6 7 8 9
Keep up the good work!
Thanks for your submission!
简单就好,没考虑效率;
题目限制:三位数乘以两位数,三位数乘以两位数的个位是个三位数(part1),同样三位数乘以两位数的十位也是一个三位数(part2)。
结果是个四位数,并且所有的数字都在题目给的范围中;
笨的方法:
three数组存所有可能的三位数,two存所有可能的两位数,判断part1 part2 以及最后的结果result即可
1![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*
2
ID:tbbd4261
3
PROG:crypt1
4
LANG:C++
5
*/
6![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
7
#include<fstream>
8
#include<vector>
9
using namespace std;
10![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
int a[10]=
{0};
11![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
12
bool valid(int x,int n) //判断数字是否合法
13![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
14
for(int i=1; i<=n; i++)
15
if(a[i]==x)return true;
16
return false;
17
}
18![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
19
bool ispri(int x,int n)//判断数是否由给定数字组成
20![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
21
while(x)
22![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23
int i=x%10;
24
if(!valid(i,n))return false;
25
x=x/10;
26
}
27
return true;
28
}
29![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
30
int main()
31![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
32
ifstream fin("crypt1.in");
33
ofstream fout("crypt1.out");
34
int n,k,i,j,cnt=0;
35
int result;
36
vector<int> three;
37
vector<int> two;
38
fin>>n;
39
for(i=1; i<=n; i++)
40
fin>>a[i];
41
for(i=1; i<=n; i++)
42
for(j=1; j<=n; j++)
43![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
44
two.push_back(a[i]*10+a[j]);
45
for(k=1; k<=n; k++)
46
three.push_back(a[i]*100+a[j]*10+a[k]);
47
}
48
49
for(i=0; i<three.size(); i++)
50
for(j=0; j<two.size(); j++)
51![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
52
int part1=three[i]*(two[j]%10);
53
int part2=three[i]*(two[j]/10);
54
result=three[i]*two[j];
55
if(result>=1000&&result<10000&&ispri(result,n)
56
&&part1>=100&&part1<=999&&part2>=100&&part2<=999&&ispri(part1,n)&&ispri(part2,n))
57
cnt++;
58
}
59
fout<<cnt<<endl;
60
61
return 0;
62
}