张运涛

c++

   :: 首页 :: 联系 :: 聚合  :: 管理

常用链接

留言簿(4)

搜索

  •  

最新评论

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>>&& 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();    
}


posted on 2010-05-02 18:05 张运涛 阅读(287) 评论(0)  编辑 收藏 引用 所属分类: 编程练习

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理