京東2017校招編程題ios
1.進制均值web
1 #include<iostream> 2 #include<vector> 3 #include<string> 4 #include<algorithm> 5 using namespace std; 6 int change(int n, int m) 7 { 8 int i = 0; 9 int sum = 0; 10 while(1) 11 { 12 sum += n % m; 13 n /= m; 14 if(n == 0) 15 break; 16 } 17 return sum; 18 } 19 //計算sum和n-2的最大公約數,方便輸出進行約分 20 int gdb(int a, int b) 21 { 22 if(a < b) 23 swap(a, b); 24 if(a % b == 0) 25 return b; 26 else 27 return gdb(b, a%b); 28 } 29 30 int main() 31 { 32 int n; 33 while(cin>>n) 34 { 35 int sum = 0; 36 for(int i=2; i<n; i++) 37 sum += change(n, i); 38 int b = gdb(sum, (n-2)); 39 cout << sum/b << "/" << (n-2)/b << endl; 40 //cout<<sum<<"/"<<n-2<<endl; 41 } 42 return 0; 43 }
2.幸運數編程
1 #include<iostream> 2 using namespace std; 3 int f(int n,int m) 4 { 5 int i = 0; 6 int sum = 0; 7 while(1) 8 { 9 sum += n % m; 10 n /= m; 11 if(n == 0) 12 break; 13 } 14 return sum; 15 } 16 int main() 17 { 18 int n; 19 int count=0; 20 while(cin>>n) 21 { 22 for(int i=1;i<=n;i++) 23 { 24 int a=f(i,10); 25 int b=f(i,2); 26 if(a==b) 27 count++; 28 } 29 cout<<count<<endl; 30 } 31 return 0; 32 }
3.集合合併函數
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 using namespace std; 5 int main() 6 { 7 vector<int> v; 8 int n,m,i; 9 int temp; 10 while(cin>>n>>m) 11 { 12 v.clear(); 13 for(i=1;i<=m+n;i++)//輸入 14 { 15 cin>>temp; 16 v.push_back(temp); 17 } 18 sort(v.begin(),v.end());//排序 19 v.erase(unique(v.begin(), v.end()), v.end());//去重 20 for (i = 0; i < v.size()-1; i++)//輸出 21 { 22 cout<<v[i]<<" "; 23 } 24 cout<<v[i]<<endl; 25 } 26 //unique()函數將重複的元素放到vector的尾部 而後返回指向第一個重複元素的迭代器 再用erase函數擦除從這個元素到最後元素的全部的元素 27 return 0; 28 }
4.保衛方案 學習