//第三题 其实还可以更简单 #include<bits/stdc++.h> using namespace std; void rotate1(vector<int>& nums,int k) { int len = nums.size(); if(k!=0) { k = k>=len?k%len:k; vector<int> temp; if(k!=0) { reverse(nums.begin(), nums.end()); reverse(nums.begin(), nums.begin()+k); reverse(nums.begin()+k, nums.end()); } } } int main() { string str; cin>>str; stringstream ss(str); int k; cin>>k; vector<int> nums; while(getline(ss,str,',')) { nums.push_back(stoi(str)); } rotate1(nums,k); for(int i=0;i<nums.size();i++) { cout<<nums[i]; if(i!=nums.size()-1) cout<<","; } return 0; } //第二题 #include<bits/stdc++.h> using namespace std; vector<vector<int>> fun(vector<int>& nums) { vector<vector<int>> ret; int n = nums.size(); sort(nums.begin(), nums.end()); set<vector<int>> all; for(int i=0;i<nums.size()-2;i++) { if(nums[i]>0) break; else if(i>0&&nums[i]==nums[i-1]) continue; int target = -nums[i]; int j=i+1; int k = nums.size()-1; while(j<k) { if(nums[j]+nums[k]==target) { while(nums[k]==nums[k-1]&&j<k) { k--; } while(nums[j]==nums[j+1]&&j<k) ++j; ret.push_back({nums[i],nums[j],nums[k]}); k--; j++; } else if(nums[j]+nums[k]>target) k--; else if(nums[j]+nums[k]<target) j++; } } return ret; } int main() { vector<int> nums; int n; while(1) { cin>>n; nums.push_back(n); if(cin.get()=='\n') break; } vector<vector<int>> ret = fun(nums); for(int i=0;i<ret.size();i++) { for(int j=0;j<ret[0].size();j++) { cout<<ret[i][j]<<" "; } cout<<endl; } return 0; } //第一题 #include<bits/stdc++.h> using namespace std; int main() { string version1,version2; cin>>version1>>version2; stringstream ss1(version1); stringstream ss2(version2); while (1) { /* code */ string str1,str2; getline(ss1,str1,'.'); int v1 = stoi(str1); getline(ss2,str2,'.'); if(str2==""||str1=="") { if(str2==""&&str1!=""&&stol(str1)!=0) cout<<1<<endl; else if(str1==""&&str2!=""&&stol(str2)!=0) cout<<-1<<endl; else cout<<0<<endl; return 0; } int v2 =stoi(str2); if(v1<v2) { cout<<-1<<endl; return 0; } if(v1>v2) { cout<<1<<endl; return 0; } } return 0; }
全部评论
(0) 回帖