百团纳新
2016-02-04 22:53
260 查看
[题目描叙]
最期待的就是每年的百团纳新了有木有,为何呢,当然是寻找单身组织了。加了社团,总会
有各种见面会啊,一伙人围坐一圈总不能一直眼神交流吧,轮流出节目吧。
假设你是第一个,你给出一个数字 num,从你开始报数 1,你的右手方向报数 2,以此类推,
直到报数为 num 的要表演节目。表演完,从表演者的下一个继续从 1 开始报数,已经报过
数的人不用再报,直到只剩最后一个没出过节目的,当然了最后一个不用出节目。
身为 IT 男神,总不能现场表演敲代码吧,唯一的办法就是成功避开所有为 num 的报数。
输入:
第一行输入一个正整数 N,N<100,表示有 N 个人围成一圈
接下来有 N 行,表示从你开始往右手方向的 N 个人的名字,第一个是你的名字
输出:
第一行输出 num,表示你能给出的最小的 num 使你能避开所有为 num 的报数
接下来有 N-1 行,按表演顺序输出表演者的名字
样例输入:
5
Mike
Jake
Marry
KangKang
June
样例输出:
4
KangKang
Marry
June
Jake
[解题思路]
num的值从2一直往n递增,直到剩下的最后一个人是自己,这时跳出循环,得到的num值就是满足题意的最小的num值!
[代码]
#include<stdio.h>
#include<string.h>
int main()
{
int n;
int i;
char a[100][10];
char b[100][10];
char d[100][10];
char me[2][10];
scanf("%d",&n);
int m=n;
for(i=1;i<=n;i++)
{
scanf("%s",a[i]);
strcpy(d[i],a[i]);
}
strcpy(me[1],a[1]);
for(int num=2;;num++){
int temp=num;
char c[100][10];
int signC=1;
int sign=1;
n=m;
int s=num;
while(n!=1)
{
if(temp%n!=0)
num=temp%n;
else num=n;
if(strcmp(me[1],a[num])==0){sign=0;break;}
strcpy(c[signC],a[num]);
signC++;
int s=1;
for(int j=num+1;j<=n;j++){
strcpy(b[s],a[j]);
s++;
}
for(int m=1;m<num;m++){
strcpy(b[s],a[m]);
s++;
}
for(int k=1;k<s;k++){
strcpy(a[k],b[k]);
}
n--;
}
num=s;
if(sign)
{
printf("%d\n",temp);
for(i=1;i<m;i++)
{
printf("%s\n",c[i]);
}
break;
}
for(i=1;i<=m;i++)
{
strcpy(a[i],d[i]);
}
}
}
最期待的就是每年的百团纳新了有木有,为何呢,当然是寻找单身组织了。加了社团,总会
有各种见面会啊,一伙人围坐一圈总不能一直眼神交流吧,轮流出节目吧。
假设你是第一个,你给出一个数字 num,从你开始报数 1,你的右手方向报数 2,以此类推,
直到报数为 num 的要表演节目。表演完,从表演者的下一个继续从 1 开始报数,已经报过
数的人不用再报,直到只剩最后一个没出过节目的,当然了最后一个不用出节目。
身为 IT 男神,总不能现场表演敲代码吧,唯一的办法就是成功避开所有为 num 的报数。
输入:
第一行输入一个正整数 N,N<100,表示有 N 个人围成一圈
接下来有 N 行,表示从你开始往右手方向的 N 个人的名字,第一个是你的名字
输出:
第一行输出 num,表示你能给出的最小的 num 使你能避开所有为 num 的报数
接下来有 N-1 行,按表演顺序输出表演者的名字
样例输入:
5
Mike
Jake
Marry
KangKang
June
样例输出:
4
KangKang
Marry
June
Jake
[解题思路]
num的值从2一直往n递增,直到剩下的最后一个人是自己,这时跳出循环,得到的num值就是满足题意的最小的num值!
[代码]
#include<stdio.h>
#include<string.h>
int main()
{
int n;
int i;
char a[100][10];
char b[100][10];
char d[100][10];
char me[2][10];
scanf("%d",&n);
int m=n;
for(i=1;i<=n;i++)
{
scanf("%s",a[i]);
strcpy(d[i],a[i]);
}
strcpy(me[1],a[1]);
for(int num=2;;num++){
int temp=num;
char c[100][10];
int signC=1;
int sign=1;
n=m;
int s=num;
while(n!=1)
{
if(temp%n!=0)
num=temp%n;
else num=n;
if(strcmp(me[1],a[num])==0){sign=0;break;}
strcpy(c[signC],a[num]);
signC++;
int s=1;
for(int j=num+1;j<=n;j++){
strcpy(b[s],a[j]);
s++;
}
for(int m=1;m<num;m++){
strcpy(b[s],a[m]);
s++;
}
for(int k=1;k<s;k++){
strcpy(a[k],b[k]);
}
n--;
}
num=s;
if(sign)
{
printf("%d\n",temp);
for(i=1;i<m;i++)
{
printf("%s\n",c[i]);
}
break;
}
for(i=1;i<=m;i++)
{
strcpy(a[i],d[i]);
}
}
}
相关文章推荐
- Android_Studio快捷键和使用技巧
- springboot配置文件加载不到的问题
- 关于python对于aspx网页的post提交
- 关于OpenCV3.1读取摄像头图像黑屏情况
- 基本算法——第六单元 回溯
- 组态王为什么一定要定义一个COM口?
- 《C#微信开发系列(2)-自定义菜单管理》
- Linux文件系统
- Android Material Design I-基础知识
- 策略模式
- hdoj 3790 最短路径问题(根据两个变量的最短路)
- Eclipse快捷键大全
- 基本算法——第五单元 递归
- xiraMD2ahcraeS.74
- 执行计划
- Android开发设计模式之——单例模式
- 关于组态王的字符串写入问题:
- 面试笔试杂项积累-leetcode 96-100
- 【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论
- js实现对身份证校验