搜狐畅游游戏开发编程题


搜狐畅游游戏开发编程题

搜狐畅游两道编程题
1  最短距离
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int x, y, n;
char ch;
string str;
cin >> x >>ch>> y>>ch >> n>>ch;



int min = 9999999;
int res_x = 0, res_y = 0;
int value = 0;
vector<int> arr(n*2, 0);
for (int i = 0; i < n*2; i+=2)
{
int a, b;
char c;
cin >> a >> c >> b;
arr[i] = a;
arr[i + 1] = b;
if (i != 2*n - 2)
cin >> c;

}



for (int i = 0; i < 2 * n; i+=2)
{
value = (arr[i] - x)* (arr[i] - x) + (arr[i+1] - y)* (arr[i+1] - y);
if (value < min)
{
min = value;
res_x = arr[i];
res_y = arr[i + 1];
}
}

cout << "(" << res_x << "," << res_y << ")" << endl;

system("pause");


2.求第k个数
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n, k;
while (cin >> n >> k)
{
long long sum = 0;
int tmp = k;
int i = 0;
while (tmp)
{
if (tmp & 1 == 1)
{
sum += pow(n, i);

}
i++;
tmp >>= 1;

}
cout << sum << endl;
}
}


#笔试题目##搜狐畅游#
全部评论
第二题看不懂 求解释。。
点赞 回复 分享
发布于 2018-09-15 20:55
大神,第二题求解。。。
点赞 回复 分享
发布于 2018-09-15 21:01
第二题是什么思路,求大神赐教!!
点赞 回复 分享
发布于 2018-09-15 21:06
第二道把k转换成2进制再用n转换回10进制就行了。
点赞 回复 分享
发布于 2018-09-15 21:37
直接暴力求解,k<=1000<2^10 先用求出n的0至9次方 然后用递归求出2^10个数,排序输出第k个数
点赞 回复 分享
发布于 2018-09-15 22:13
第二题其实就是看你能不能发现其中的规律了,最高次方为0 的时候只有一个数,等效于2^0次方,最高次方为1的时候,有两种情况,2^1,所以最高次方为n,则那一部分的个数就是2^n,然后题目中让我们求解第K个数,所以我们就可以找到第K个数满足的规律,还是看图吧^_^
点赞 回复 分享
发布于 2018-09-15 21:25
第一道和你的做法一样,但75%不知道为什么,,,,
点赞 回复 分享
发布于 2018-09-15 21:36
int main() {     int n, k;     cin >> n >> k;     long long res = 0;     int cnt = 0;     int mask = 1;     while (mask < k)     {         if (k&mask)         {             res += pow(n, cnt);         }         cnt++;         mask = (mask << 1);     }     cout << res << endl;     system("pause");     return 0; } 百分之90,难受
点赞 回复 分享
发布于 2018-09-15 22:36
有没有原题。。。完全忘了
点赞 回复 分享
发布于 2018-09-27 10:47

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
2 8 评论
分享
牛客网
牛客企业服务