A Algorithm Course
題意:給你一個字串,找里面有多少個cat和dog
思路:直接string函式find一直找到末尾并累加即可,
#include<bits/stdc++.h>
using namespace std;
int main(){
string s; cin>>s;
int cnt = 0;
int i = 0;
while(s.find("cat",i)!=string::npos){
i = s.find("cat",i)+3;
cnt++;
}
i = 0;
while(s.find("dog",i)!=string::npos){
i = s.find("dog",i)+3;
cnt++;
}
cout<<cnt<<"\n";
return 0;
}
B Best Grouping
題意:給出n(<1e5),找出1到n這n個數中最多有幾對對子滿足最大公約數大于1,每個數不能重復用,先輸出有幾對,再輸出這些對子,
思路:大概就是,,找1到n每個數因數里的最大質數,然后有相同的就湊一對,如果相同的有奇數個,就把第2個(該質數的2倍)加到以2為最大質因數陣列中,
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int maxp[maxn];
vector<int>a[maxn];
int main(){
ios::sync_with_stdio(false);
maxp[2] = 2; maxp[3] = 3;
for(int i = 4; i <= maxn; i++){
int k = i;
for(int j=2; j*j <= k; j++){
while(k%j==0){
maxp[i] = j; k/=j;
}
}
if(k!=1)maxp[i] = k;
}
int T; cin>>T;
while(T--){
int n; cin>>n;
vector<pair<int,int> >ans;
for(int i = 2; i <= n; i++)a[i].clear();
for(int i = 2; i <= n; i++)a[maxp[i]].push_back(i);
for(int i = n; i >= 2; i--){
if(a[i].size()<2)continue;
if(a[i].size()%2==0){
for(int j = 0; j < a[i].size(); j+=2)
ans.push_back({a[i][j],a[i][j+1]});
}else{
if(i!=2)a[2].push_back(a[i][1]);
ans.push_back({a[i][0],a[i][2]});
for(int j = 3; j < a[i].size(); j+=2)
ans.push_back({a[i][j],a[i][j+1]});
}
}
cout<<ans.size()<<" ";
for(auto i:ans)cout<<i.first<<" "<<i.second<<" ";
cout<<"\n";
}
return 0;
}
C Computer Science Ability Test
題意:無
思路:妙啊,最多只要提交2^10份代碼,就可以ak了,(可以用py寫個生成cpp檔案的程式,寫個自動上傳的程式),只要不怕罰時,一定能A出來的,
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"FTTFTFFTFT";
return 0;
}
以下附贈更新一份神仙的代碼

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238058.html
標籤:其他
上一篇:[C語言]——整型的截斷與提升
