程序设计大赛-留下的学生
来源:互联网 发布:台球直播软件 编辑:程序博客网 时间:2024/05/01 06:28
留下的学生:
军训时有N个学生站成一行,从右到做,从1到N依次编号,他们还得到一个整数M.然后这些学生西欧那个右手边的学生开始报数。报的数为M的倍数的学生留在队列里,其他的学生需要离开队列。他们重复进行这项操作直到队列中的人数小于M.
输入格式:
输入包含几组测试数据。每组测试数据只占单独的一行,包含两个整数n和m(3<=n<=10^9,2<=m<=n).当n=0并且m=0的时候结束输入。
输出格式:
对于每组测试数据,输出两列。每一行包含一个整数X,表示最终留下的学生的数目。第二行包含X个整数,表示最终留下的学生的编号,各个整数之间用1个空格隔开。如:
输入:
10 3
8 3
0 0
输出:
1
9
2
3 6
我的程序:
#include<iostream.h>
#include<stdio.h>
//求m的n次方
long power(int m,int n)
{
long sum=1;
for(int i=0;i<n;i++)
sum*=m;
return sum;
}
//清空文件
void cleanfile()
{
FILE *pt;
if(NULL==(pt=fopen("output.txt","w")))
{
cout<<"can't open the file!";
}
else
{
fclose(pt);
}
}
void main()
{
long n,m,k,num;
FILE *pt1,*pt2;
int a[100000],i;
cleanfile();
if(NULL==(pt1=fopen("input.txt","r")))
{
cout<<"can't open the file!";
}
else
{
fscanf(pt1,"%d",&n);
fscanf(pt1,"%d",&m);
while(!(n==0 && m==0))
{
k=n;
num=0;
while(k>=m)
{
k=k/m;
num++;
}
for(i=0;i<k;i++)
{
a[i]=power(m,num)*(i+1);
}
fscanf(pt1,"%d",&n);
fscanf(pt1,"%d",&m);
if(NULL==(pt2=fopen("output.txt","a")))
{
cout<<"can't open the file!";
}
else
{
fprintf(pt2,"%d/n",k);
if(n==0 && m==0)
{
for(i=0;i<k-1;i++)
{
fprintf(pt2,"%d ",a[i]);
}
fprintf(pt2,"%d",a[k-1]);
}
else
{
for(i=0;i<k-1;i++)
{
fprintf(pt2,"%d ",a[i]);
}
fprintf(pt2,"%d/n",a[k-1]);
}
fclose(pt2);
}
}
fclose(pt1);
}
}
输入:
10 3
100 6
8 3
100000000 9
0 0
输出:
1
9
2
36 72
2
3 6
2
43046721 86093442
- 程序设计大赛-留下的学生
- 让学生心灵深处留下一个美好的回忆
- 程序设计大赛
- 程序设计大赛
- 【windows程序设计】我的第二窗口。留下作纪念。
- 第二届程序设计大赛 正确的IP
- 软件工程系学生在全国程序设计大赛中获得优异成绩
- ACM程序设计大赛简介
- 程序设计大赛题目
- 2008程序设计大赛
- 程序设计大赛---骑士巡游
- 程序设计大赛—文字游戏
- 程序设计大赛--约瑟夫问题
- 程序设计大赛---多米诺效应
- 程序设计大赛---医院设备利用
- ACM程序设计大赛概况
- 97世界程序设计大赛
- 转贴 c程序设计大赛
- 图解SQL Server 2000和SQL Server 2005定期自动备份数据库(SQL Server 2005篇)
- ACE框架的三大部分
- 自定义制作填报表的提交确认提示框
- map 的遍历
- JSP连接ACCESS数据库的简单代码
- 程序设计大赛-留下的学生
- 手机端应用开发入口
- 沉痛悼念在前线壮烈牺牲的战友
- 鲁迅和胡适为何拒绝诺贝尔文学奖?
- 集中抄表系统前景分析
- flex 面试题
- 自动抄表系统的未来之路
- 千里之行,始于足下——砺剑成器
- Look N Stop防火墙使用指南规则教程(1)