#include<iostream>#include<cstring>#include<cmath>#include<vector>usingnamespace std ;boolcmp(vector<int>&s1 , vector<int>&s2){if(s1.size()!= s2.size())return s1.size()> s2.size();else{for(int i = s1.size()-1; i >=0; i--){if(s1[i]!= s2[i])return s1[i]> s2[i];}returntrue;}}
vector<int>sub(vector<int>&s1 , vector<int>&s2){
vector<int> s3 ;int t =0;for(int i =0; i < s1.size(); i++){
t = s1[i]- t ;if( i < s2.size()) t -= s2[i];
s3.push_back((t +10)%10);if(t <0) t =1;else t =0;}while(s3.size()>1&& s3.back()==0) s3.pop_back();return s3 ;}intmain(){
vector<int> s1 ;
vector<int> s2 ;
vector<int> s3 ;
string str1 , str2 ;
cin >> str1 >> str2 ;for(int i = str1.size()-1; i >=0; i--) s1.push_back(str1[i]-'0');for(int i = str2.size()-1; i >=0; i--) s2.push_back(str2[i]-'0');// for(int i = 0 ; i < s1.size() ; i ++) cout << s1[i] ;// cout << endl ;// for(int i = 0 ; i < s2.size() ; i ++) cout << s2[i] ;// cout << endl ;if(cmp(s1 , s2)) s3 =sub(s1 , s2);else{
s3 =sub(s2 , s1);
cout <<"-";}for(int i = s3.size()-1; i >=0; i--) cout << s3[i];
cout << endl ;return0;}
例题2:圆桌问题 HDU - 4841
#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<vector>usingnamespace std;intmain(){
vector <int> table ;int n , m ;while( cin >> n >> m ){
table.clear();for(int i =0; i <2* n ; i++)
table.push_back(i);int pos =0;for(int i =0; i < n ; i++){
pos =( pos + m -1)% table.size();
table.erase(table.begin()+ pos );}int j =0;for(int i =0; i <2* n ; i++){if( i %50==0&& i ) cout << endl ;if( j < n && i == table[j]){
j++;
cout <<"G";}else cout <<"B";}
cout << endl << endl ;}return0;}