题目1:数的分解
思路:暴力
#include<bits/stdc++.h>
using namespace std;
//判断是否合法
bool judge(int n) {
while(n) {
if(n%10==2||n%10==4) {
return 0;
break;
}
n/=10;
}
return true;
}
int main() {
int sum=0;
// 因为调换顺序也算同一种方法,因此顺序取数,即i<j<k;
for(int i=1; i<=672; i++)
for(int j=i+1; j<2019-i-j; j++)
// 分别判定三个数是否合法
if(judge(2019-i-j)&&judge(j)&&judge(i))
sum++;
cout<<sum;
}
题目2:猜生日
思路:还是暴力枚举
#include<bits/stdc++.h>
using namespace std;
int main() {
// 暴力枚举
for(int i = 19000101; i<20120312; i++) {
int year = i/10000;
int month = i/100 % 100;
int day = i%100;
// 注意因为是6月,还要判断日不会超过30天
if(i%2012 == 0 && month==6 && day<=30&&i%3 == 0&&i%12==0) {
cout<<i<<endl;
break;
}
}
}
题目3:成绩分析
思路:直接模拟
注意点:要四舍五入,所以可以调用round()函数,但是要注意先乘以100以后再调用,否则结果会一直为0
#include<bits/stdc++.h>
using namespace std;
double yx,jg;
int main()
{
int n,t;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
yx+=(t>=85);
jg+=(t>=60);
}
int cnt1=round((jg/n)*100);
int cnt2=round((yx/n)*100);
cout<<cnt1<<"%"<<endl<<cnt2<<"%"<<endl;
}