1. 找素数
描述:给出一个整数n,n<=1000,要求输出n以内的所有素数。
输入:仅一行,为整数n。
输出:输出n以内的所有素数,一行一个。
输入样例:
10
输出样例:
2
3
5
7
2.最大公因子问题(Great Common Divisor)
输入:每行输入两个要计算最大公因子的正整数,中间用空格分开,输入0 0代表结束。
输出: 输出对应两个数的最大公因子。
输入样例:
12 36
25 24
0 0
输出样例:
12
1
3.数的长度
描述:
N!(N的阶乘)是非常大的数,计算公式为:N!=N×(N-1)×(N-2)×…×2×1。现在需要知道N!有多少(十进制)位。
输入:每行输入一个正整数N。0<N<1000000
输出: 对于每个N,输出N!(十进制)的位数。
输入样例:
1
3
32000
1000000
输出样例:
1
1
130271
5565709
4. 明明的随机数
输入:输入有两行,第1行为1个正整数,表示所生成的随机数的个数N,第2行有N个正整数,中间用空格隔开,为所产生的随机数。
输出:输出也是两行,第1行为1个正整数M,表示不相同的随机数的个数,第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入样例:
10
20 40 32 67 40 20 89 300 400 15
输出样例:
8
15 20 32 40 67 89 300 400
5.连续自然数和
输入:仅一行,输入正整数M( 10<=M<=2000000)
输出: 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。
输入样例:
10000
输出样例:
18 142
297 328
388 412
1998 2002
6. 生日聚会(就是那个什么环)
输入:第一行输入一个整数T代表样例的组数
下面T行,每行一个整数N, 1 <= N<=100;N如题目所述。
输出:
对于每组数据,第一行输出一个整数M,表示有M个这样的数字K会让Jacmy受罚,接下来一行是M个整数,代表K分别取的哪些值,这些数字间用空格隔开。
输入样例:
3
5
8
10
输出样例:
1
4
2
2 6
1
8
#include <iostream>
#include <fstream>
#include <set>
#include <list>
#include <algorithm>
#include <cmath>
using namespace std;
// 安徽理工大学第一届code
void exam1()
{
int n;
while(cin>>n)
{
for (int i=2;i<=n;i++)
{
bool beP=true;
for (int j=2;j<i;j++)
{
if (i%j==0)
{
beP=false;
break;
}
}
if (beP) cout<<i<<endl;
}
}
}
void exam2()
{
int m,n;
while (cin>>m>>n && m!=0 && n!=0)
{
int min= m>=n? n:m, temp=2,result=1;
while(temp<min)
{
if(m%temp==0 && n%temp==0) {m/=temp;n/=temp;result*=temp;}
else ++temp;
}
cout<<result<<endl;
}
}
void exam3()
{
int num;
while (cin>>num)
{
double result=0;
for (int i=1;i<=num;i++)
result+=log10(i);
cout<<(int)(++result)<<endl;
}
}
void exam4()
{
int num;
while(cin>>num)
{
set<int> col;
for (int i=0;i<num;i++)
{
int temp;
cin>>temp;
col.insert(temp);
}
cout<<col.size()<<endl;
copy(col.begin(),col.end(),ostream_iterator<int>(cout," "));
}
}
void exam5()
{
int num;
while(cin>>num)
{
for (int i=1;i<num/2+1;i++)
for (int j=i+1;j<=num;j++)
if( (i+j)*(j-i+1)/2 ==num ) cout<<i<<" "<<j<<endl;
}
}
void exam6()
{
int num;
while (cin>>num)
{
for (int t=0;t<num;t++)
{
int len,temp; cin>>len;temp=len;
list<int> col;
while(temp) col.push_front(temp--);
list<int> result;
for (int i=1;i<=len;i++)
{
list<int> col1(col);
list<int>::iterator p=col1.begin();
while(col1.size()!=1)
{
for (int j=0;j<i-1;j++)
if (++p==col1.end())
p=col1.begin();
p=col1.erase(p);
if(p==col1.end()) p=col1.begin();
}
if(*p==1) { result.push_back(i);}
}
cout<<result.size()<<endl;
copy(result.begin(),result.end(),ostream_iterator<int>(cout," "));
cout<<endl;
}
}
}
void main()
{
exam6();
}