4.2w+
社区成员
目录
题目:把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
思路:暴力求解,过滤重复,定义区间是最好的i<j<k
解题代码:
#include <iostream>
using namespace std;
bool check(int a,int b,int c)
{
if(a==b||a==c||b==c) return false;
while(a||b||c)
{
if(a%10==4||b%10==4||c%10==4||a%10==2||b%10==2||c%10==2) return false;
a/=10;
b/=10;
c/=10;
}
return true;
}
int main()
{
// 请在此输入您的代码
int cnt=0;
for(int i=1;i<=673;i++) //i<j<k
{
for(int j=i+1;j<=2018;j++)
{
int k=2019-i-j;
if(check(i,j,k)&&j<k) cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
题目:今年的植树节(20122012 年 33 月 1212 日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”
“把我出生的年月日连起来拼成一个 88 位数(月、日不足两位前补 00)正好可以被今天的年、月、日整除!”
他想了想,又补充到:“再给个提示,我是 66 月出生的。”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
格式是年月日连成的 88 位数。例如,如果是 19481948 年 66 月 1212 日,就写:1948061219480612。
思路:让我们大胆预测一下,叔叔可能的岁数,第一遍判断忘记判断日期是否成立了,出现了6月96号。
解题思路:
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int n=2012*12;
for(int i=19000101;i<20120312;i++)
{
int moy=i-(i/10000)*10000;
int day=moy-(moy/100)*100;
if( moy/100==6 && (i%2012==0&&i%12==0) && day<=30)
{
cout<<i<<endl;
return 0;
}
}
return 0;
}
题目:小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
思路:主要考察四舍五入吧,就是+0.5,如果大于0.5就会合成1以上的数,小于0.5就被砍掉啦
解题代码:(printf似乎自动四舍五入)
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int n,x;
cin>>n;
float cnt1=0,cnt2=0;
for(int i=0;i<n;i++)
{
cin>>x;
if(x>=85) cnt2++;
if(x>=60) cnt1++;
}
float ans1,ans2;
ans1=cnt1*100/n;
ans2=cnt2*100/n;
printf("%.0f%%\n%.0f%%\n",ans1,ans2);
return 0;
}