#include <iostream> using namespace std; int main() { // 请在此输入您的代码 int x = 23; x+=20*21; cout<<x; return 0; }
第一题是数学题
#include <iostream> using namespace std; long long findday(int a,int b,long long n){ long long num = 0; long long day = 0; int a1 = a*5; int b1 = b*2; long long sum = a1 + b1; day = 7 * (n/sum); num += sum * (n/sum); if(num==n){ return day; } if(num+a>=n){ return day+1; } else if(num+a*2>=n){ return day+2; } else if(num+a*3>=n){ return day+3; } else if(num+a*4>=n){ return day+4; } else if(num+a1>=n){ return day+5; } else if(num+a1+b>=n){ return day+6; } else if(num+a1+b1>=n){ return day+7; } } int main() { // 请在此输入您的代码 long long day = 0; long long n; int a,b; cin>>a>>b>>n; day = findday(a,b,n); cout<<day; return 0; }
第二题因为只有七天,我就用了枚举,要注意边界。
#include <iostream> #include <algorithm> using namespace std; int main() { // 请在此输入您的代码 int n; int height[10000]; cin>>n; for(int i = 0;i < n; i++){ height[i] = max(n-1-i,i-0)*2; } for(int i = 0;i < n; i++){ cout<<height[i]<<endl; } return 0; }
第三题找到规律就很简单。
#include <iostream> using namespace std; const int N = 1e5 +10; int a[N]; int main(void){ int n,k; long long sum =0,count=0,yu; cin>>n>>k; a[0]=1; for(int i = 0;i<n;i++){ int input; cin>>input; sum += input; yu = sum%k; count += a[yu]; a[yu]++; } cout<<count; }
我悟了,余数相同的区间相减可以为一个k倍区间,原来是这样,我悟了啊