Repository navigation
Expand file tree
/
Copy pathP033.cpp
More file actions
90 lines (90 loc) · 2.44 KB
/
Copy pathP033.cpp
File metadata and controls
90 lines (90 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <cmath>
using namespace std;
class fraction{
public:
unsigned int dem,num;
fraction operator*(unsigned int x){
fraction R=*this;
R.num*=x;
return R;
}
fraction(){};
fraction(unsigned int x){
num=x;
dem=1;
}
fraction operator+(fraction that){
fraction R;
R.dem=this->dem*that.dem;
R.num=this->num*that.dem+that.num*this->dem;
return R;
}
fraction operator/(fraction that){
fraction R;
R.dem=this->dem*that.num;
R.num=this->num*that.dem;
return R;
}
fraction operator*(fraction that){
fraction R;
R.dem=this->dem*that.dem;
R.num=this->num*that.num;
return R;
}
void operator++(int){
num++;
}
bool operator<=(unsigned int x){
return num<=x;
}
bool operator==(fraction that){
return (this->num*that.dem==this->dem*that.num);
}
bool operator<(fraction that){
return (this->num*that.dem<this->dem*that.num);
}
bool operator !=(unsigned int x){
return (num)!=(x*dem);
}
void Simple(void){
for(unsigned int i=2;i<=num;i++){
if(!(num%i) && !(dem%i)){
num/=i;
dem/=i;
i--;
}
}
}
};
ostream&operator<<(ostream&a,fraction b){
a<<'('<<b.num<<'/'<<b.dem<<')';
return a;
}
unsigned int P033(){
fraction P=fraction(1);
for(fraction i=1;i<=9;i++){
for(fraction j=0;j<=9;j++){
for(fraction k=1;k<=9;k++){
if(!(k==j && k==i)){
if(j<k){
if((j/k)==(j*10+i)/(i*10+k)){
//cout<<j/k<<'='<<(j*10+i)/(i*10+k)<<endl;
P=P*(j/k);
}else if((j/k)==(i*10+j)/(k*10+i)){
//cout<<j/k<<'='<<(i*10+j)/(k*10+i)<<endl;
P=P*(j/k);
}
}
}
}
}
}
//cout<<P<<endl;
P.Simple();
return P.dem;
}
int main(){
cout<<P033()<<endl;
return 0;
}