YACS-202110
YACS-202110
运费计算
#include<bits/stdc++.h>
using namespace std;
int a,ans=12;
int main(){
cin>>a;
if(a>1000){
int surplus = a-1000;
ans+=surplus/500*5;
if(surplus%500!=0){
ans+=5;
}
}
cout<<ans;
}
阶乘的余数
http://iai.sh.cn/problem/497
#include<bits/stdc++.h>
using namespace std;
long long ans=1;
long long n,m;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
ans*=i;
ans%=m;
}
cout<<ans%m;
}
多边形的判定
http://iai.sh.cn/problem/499
#include<bits/stdc++.h>
using namespace std;
long long ans;
int n,a[100001];
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
ans+=a[i];
}
bool flag=true;
for(int i=0;i<n;i++){
if(a[i]>=ans-a[i]){
flag=false;
break;
}
}
if(flag){
cout<<"Yes";
}else{
cout<<"No";
}
}
淘气合影
http://iai.sh.cn/problem/505
#include<bits/stdc++.h>
using namespace std;
int n,pos[100005][6],a[100005];
//在正确的排列中的任意两个人x和y,假设x在y的左侧
//在这五次照片中,x最多只有2次可能在y的右侧 1.x跑到y的右侧 2.y跑到x的左侧
//其余都是x在y的左侧,因此这5次照片中超过3次出现x在y的左侧,那正确顺序x一定在y的左侧
bool cmp(int x,int y){
int cnt=0;//记录5次照片中x 出现在y左侧的次数
for(int i=1;i<=5;i++){
if(pos[x][i]<pos[y][i]){
cnt++;
}
}
return cnt>=3;//大于三次,一次是正确的顺序
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
a[i]=i;
}
for(int i=1;i<=5;i++){
for(int j=1,x;j<=n;j++){
cin>>x;
pos[x][i]=j;//x 第i次的位置
}
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
黑白翻转棋
http://iai.sh.cn/problem/506
#include<bits/stdc++.h>
using namespace std;
int n,m,a[22][22],b[22][22];
//数组copy
void cop(){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
b[i][j]=a[i][j];
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
int maxx=1e9;
for(int i=0;i<(1<<m);i++){
cop();
bool ok=false;
int cnt=0;
for(int j=1;j<=m;j++){
if((i>>(j-1)) &1 ){
b[1][j]^=1;
b[1][j-1]^=1;
b[1][j+1]^=1;
b[2][j]^=1;
cnt++;
}
}
for(int ii=2;ii<=n;ii++){
for(int jj=1;jj<=m;jj++){
if(b[ii-1][jj]){
cnt++;
b[ii-1][jj]^=1;
b[ii][jj-1]^=1;
b[ii][jj]^=1;
b[ii][jj+1]^=1;
b[ii+1][jj]^=1;
}
}
}
ok=true;
for(int jj=1;jj<=m;jj++){
if(b[n][jj]){
ok=false;
}
}
if(ok) maxx=min(maxx,cnt);
}
if(maxx==1e9){
printf("Impossible\n");
}else{
printf("%d\n",maxx);
}
}
作者:newcode 更多资源请关注纽扣编程微信公众号

从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习

浙公网安备 33010602011771号