首页 > 代码库 > uva1452
uva1452
这题说的是给了一个序列1到n然后你从1 位置开始数k个删除,直到最后每个数都被删除了。我们考虑1个数在被删除前后的位置,比如现在在i位置那么 回到删除当前的最后一个是 (i+k)L 了为删除前 的 个数, 这样我们每次重新排序后就知道他在什么位置了
这样模拟着三个数就可以了不断的往回退
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int main(){ int cas; scanf("%d",&cas); for(int cc=1; cc<=cas; ++cc){ int n,k; scanf("%d%d",&n,&k); int a,b,c; a=0; a=(a+k)%2; if(a==0) b=1; else b=0; a=(a+k)%3; b=(b+k)%3; for(int i=0; i<3; ++i) if(i!=a&&i!=b){ c=i; break; } for(int i=4; i<=n; ++i){ a=(a+k)%i; b=(b+k)%i; c=(c+k)%i; } printf("%d %d %d\n",c+1,b+1,a+1); } return 0;}
uva1452
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。