寒假acm训练第三周
这个题就是简单的数学思维
如果这个数组里全部都是10的倍数那直接计数达到n就直接出0
如果有其它不是10的倍数那找出最小的直接减去就可以了
下面就是代码
#include<iostream> #include<cstring> #include <cstdio> #include<bits/stdc++.h> #include<algorithm> using namespace std; int a[1000]; int main() { int n,sum=0; cin>>n; int rpg=0,x=200; for(int i=1;i<=n;i++) { cin>>a[i]; sum=sum+a[i]; if(a[i]%10==0) { rpg++; } if(a[i]%10!=0) { x=min(x,a[i]); } } if(rpg==n) { cout<<"0"; } else { if(sum%10!=0) { cout<<sum; } if(sum%10==0) { sum=sum-x; cout<<sum; } } return 0; }
这道题比较坑
首先是如果大于3200那么他可以选任意一种颜色不止8种,所以不需要考虑他大不大于8
然后就是如果小于3200的没有那么就是最小是1,最大就是大于3200的人数
还是比较简单的
#include<iostream> #include<cstring> #include <cstdio> #include<bits/stdc++.h> #include<algorithm> using namespace std; int a[1000],b[1000]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { if(a[i]>=1&&a[i]<=399) { b[1]++; } if(a[i]>=400&&a[i]<=799) { b[2]++; } if(a[i]>=800&&a[i]<=1199) { b[3]++; } if(a[i]>=1200&&a[i]<=1599) { b[4]++; } if(a[i]>=1600&&a[i]<=1999) { b[5]++; } if(a[i]>=2000&&a[i]<=2399) { b[6]++; } if(a[i]>=2400&&a[i]<=2799) { b[7]++; } if(a[i]>=2800&&a[i]<=3199) { b[8]++; } if(a[i]>=3200) { b[9]++; } } int x=0,y; for(int i=1;i<=8;i++) { if (b[i] != 0) { x++; } } y=x+b[9]; if(x==0) { x=1; y=b[9]; } cout<<x<<" "<<y<<endl; return 0; }
这道题属于排列题
狗和猴排列不能有相同的在一起
所以如果狗和猴的数目相减大于1
那么就不能形成相应的队列
所以统一输出0
如果狗和猴相等
那可以查空
先排狗然后插在狗中间进行了
然后猴在这些中间然后还剩一个放左右即可*2进行了
如果差1
就不需要乘2
结果就出来了
#include<iostream> #include<cstring> #include <cstdio> #include<bits/stdc++.h> #include<algorithm> using namespace std; const int N=1e9+7; int main() { long long int n,m; cin>>n>>m; long long int sum=1; for(long long int i=1;i<=n;i++) { sum=(sum*i)%N; } if(max(n,m)-min(n,m)>1) { cout<<0; return 0; } else { for(long long int i=1;i<=m;i++) { sum=(sum*i)%N; } if(n==m) { sum=(sum*2)%N; } } cout<<sum; return 0; }