标签:通过 数值计算 计算机程序 集合 迭代器 重要 class std 解决
京东2017校招编程题
1.进制均值
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.保卫方案
标签:通过 数值计算 计算机程序 集合 迭代器 重要 class std 解决
原文地址:http://www.cnblogs.com/lxt1105/p/7417704.html