代码片段
#include
<bits
/stdc
++.h
>
using namespace std
;
bool
check2(int n
)
{
int a
=n
;
char str
[10];
sprintf(str
,"%d",a
);
for(int i
=0;i
<10;i
++){
if(str
[i
]=='2'||str
[i
]=='4'){
return 0;
}
}
return 1;
}
bool
check1(int x
) {
int res
= 0;
while (x
) {
res
= x
% 10;
if (res
== 2 || res
== 4) return 0;
x
/= 10;
}
return 1;
}
int
main()
{ int ans_1
=0;
int ans_2
=0;
for(int i
=1;i
<2019;i
++){
for(int j
=i
+1;j
<2019;j
++){
for(int k
=j
+1;k
<2019;k
++){
if(i
+j
+k
==2019&&check1(i
)&&check1(j
)&&check1(k
)){
ans_1
++;
}
if(i
+j
+k
==2019&&check2(i
)&&check2(j
)&&check2(k
)){
ans_2
++;
}
}
}
}cout
<<"ans_1:"<<ans_1
<<endl
;
cout
<<"ans_2:"<<ans_2
<<endl
;
int ans1
=0;
int ans2
=0;
int ans3
=0;
for(int i
=1;i
<2019;i
++){
if(check1(i
)){
ans1
++;
}
if(check2(i
)){
ans2
++;
}
if(check1(i
)&& check2(i
)){
ans3
++;
}
}cout
<<"ans1:"<<ans1
<<"\nans2:"<<ans2
<<"\nans3:"<<ans3
<<endl
;
return 0;
}
结果
问题解决
对char数组初始化赋值解决,但下方ans1与ans2却正常运行原理还需探究。
int
check2(int n
)
{
int a
=n
;
char str
[10]="";需要初始化赋值
sprintf(str
,"%d",a
);
for(int i
=0;i
<10;i
++){
if(str
[i
]=='2'||str
[i
]=='4'){
return 0;
}
}
return 1;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-43412.html