题解 P4956 【[COCI2017-2018#6] Davor】
UPDATE:2020.08.09 修复了一些小错误
我们先审题
"每个星期一筹集 x 元,星期二筹集 x+k 元,……,星期日筹集 x+6k 元,并在 52个星期内筹集完" --题目
所以一周有(x+x+k+x+2k+x+3k+x+4k+x+5k+x+6k=7x+21k)元
又因为52周筹集n元,所以一周筹集n/52元
联系之前的分析,我们可以推出:
7x+21k=n/52
所以 x+3k=n/364
为了更加快捷,想到用switch语句判断n/364 mod 3的结果
最后求出答案。注意输出格式和范围。(x,k 为正整数,并且满足1≤x≤100)
很轻松就AC了
上代码
#include<bits/stdc++.h>
using namespace std;
int n,k,x;//个人习惯
int main()
{
cin>>n;
n/=364;//现在的n就是 x+3k
switch(n%3)
{
case 0:
x=99;
break;//一定要写,否则x必为98
case 1:
x=100;
break;//一定要写,否则x必为98
case 2:
x=98;
break;
}
for(;x>0;x-=3)//循环开始了 之前的switch起作用了
{
k=(n-x)/3;
if(k>0)
break;//x尽可能要大
}
cout<<x<<endl<<k;//两行输出
return 0;//养成良好习惯
}
如有不足之处请指出。谢谢。