第一题、奇偶
题目链接:https://www.acwing.com/activity/content/problem/content/7862/
比较麻烦(本人做法)
找出不同字符个数,再判断。
#include<iostream> using namespace std; #define N 10005 int fun(char* str) { char *p; char ch[N]={NULL}; int count=0,i,flag=0; for(p=str;*p!='\0';p++) { flag=0; for(i=0;i<count;i++) { if(ch[i]==*p) flag=1; } if(flag==0) ch[count++]=*p; } return count; } int main() { char str[N]={NULL}; int num; cin>>str; num=fun(str); num%2==0?cout<<"even":cout<<"odd"; }
第二题、闯关
题目链接:https://www.acwing.com/activity/content/problem/content/7863/
题目自行脑补。
特殊关卡肯定放到最后判断,还要倒排,才能保证最大!(详细看代码)
还要+long long,不然过不了
#include <iostream> #include <cstring> #include <algorithm> using namespace std; #define int long long int b[10005],t,sum,v[1005];//b是特殊关卡,v是输入编号 signed main() { int n,m; cin>>n>>m; int a[10005];//各个关卡的只因数 for(int i=1;i<=n;i++) { cin>>a[i];sum+=a[i];//求和 } for(int i=1;i<=m;i++) { cin>>v[i]; sum-=a[v[i]];//把有特殊只因的删去 t++; b[t]=a[v[i]];//加入只因家族行列 } sort(b+1,b+1+t);//看看谁是只因王 for(int i=t;i>=1;i--){//倒排,才能最大! if(sum>b[i]){//题目模拟 b[i]=sum; sum+=b[i]; } else sum+=b[i]; } cout<<sum<<endl; return 0; }
第三题、构造序列
题目链接:https://www.acwing.com/activity/content/problem/content/7864/
仅给出思路:
我们可以把前两个二元组减到极限,然后后面的gcd都是1(摆烂二元组)。
标签:周赛,AcWing83,int,题解,sum,long,content,str,include From: https://www.cnblogs.com/LuoGuyexc/p/17004940.html