码迷,mamicode.com
首页 > 其他好文 > 详细

机试真题 小朋友报数问题——约瑟夫环

时间:2020-04-11 18:39:27      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:mes   获取   cpp   return   ==   highlight   nbsp   pos   namespace   

没啥难度,还是难以判断测试用例的问题,也就是k是否大于10,否则就会采用字符串进行判断;

#include<iostream>
#include<vector>
#include<queue>
#include<string>
using namespace std;

int n, k;

struct node {
	int index = -1;
	int num = -1;
};

queue<node>que;
vector<node>vec;

bool charge(int m) {
	if (m%k == 0)
		return true;
	string sm = to_string(m);
	string sk = to_string(k);
	if (sm.size() < sk.size())
		return false;
	if (sm.find(sk,sm.size()-sk.size()) != string::npos)
		return true;
	else
		return false;
}

int main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		node n;
		n.index = i;
		n.num = i;
		if (charge(i)) {
			vec.push_back(n);
		}
		else {
			que.push(n);
		}
	}
	int cnt = n + 1;
	while (!que.empty()) {
		//对队列内进行循环计数;
		node n = que.front();
		que.pop();
		n.num = cnt++;
		if (charge(n.num)) {
			vec.push_back(n);
		}
		else {
			que.push(n);
		}
	}
	for (auto ele : vec) {
		cout << ele.index << " " << ele.num << endl;
	}
}

这里注意一下获取个位数字的问题;

如果获取个位数字,可以直接%10或者num-num/10*10;

自己当时脑子抽了没想到;

 

机试真题 小朋友报数问题——约瑟夫环

标签:mes   获取   cpp   return   ==   highlight   nbsp   pos   namespace   

原文地址:https://www.cnblogs.com/songlinxuan/p/12681243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!