网易校招C++研发工程师笔试题
选择题:
- mysql主从复制,server_id问题
- mysql key_len
- 找以.conf为结尾的文件
问答题:
实现一个超大整数的类 并实现加减法功能
用string实现大数加减法(博客里以前总结过,自己实现过乘法,加法没有做)——实现以下,再粘代码
编程题:
1.输入N个数,每次都只能转移2到其他的数,最少转移几次可以使得N个数都一样(即达到平均值)
例如:输入4个数 7 15 9 5,输出3
注意cout以后要return
#include<iostream> using namespace std; int main(){ int cows; int apples[100]; cin>>cows; int index=0,sum=0; for(int index=0;index<cows;index++){ cin>>apples[index]; sum+=apples[index]; } if(cows==0){ cout<<0<<endl; return 0; } if(sum%cows!=0){ cout<<-1<<endl; return 0; } int average=sum/cows; int less=0,more=0; for(int i=0;i<cows;i++){ if(apples[i]<average){ int d=average-apples[i]; if(d%2!=0){ cout<<-1<<endl; return 0; } else less+=d/2; } if(apples[i]>average){ int d=apples[i]-average; if(d%2!=0){ cout<<-1<<endl; return 0; } else more+=d/2; } } if(less==more) cout<<less<<endl; else cout<<-1<<endl; return 0; }
2.0=<h<=10^18 满足x+x^2<h 求x x为整数
注意点:用long long 可以实现10^18
3.给一个M*N的数组,每个数组中的数代表此块田地的价值,横三刀竖三刀分成16分,求各种划分方案16分中最小总价值的最大值。