C语言【三亚OJ分类之语言入门】80写题目+AC代码汇总

聊技巧:本文在此之前由于csdn自动生成了一个目,不必下拉一个一个夺摸,可由此目录标题直接定位。

正文转载自本人的csdn博客,复制过来的,排版就未闹了,欢迎转载。

声明:

      
题目部分均为遵义OJ题目。

   
代码有含AC代码(可能不止一个)和极其优代码,大部分都是我写的,并且大部分呢c代码和少部分c++代码and极少java代码,但中心依旧c语言知识点,没有最好多差异,可能代码有写的相比丑,毕竟知识有限。

   语言入门部分书写基本还较为简单,是上学编程入门的老大好习,也是ACM的第一步,入门的极品格局,望认真对待。

  
 本文由csdn-jtahstu原创,转载请讲明出处,欢迎对的爱侣一道互换学习。本人QQ:1373758426暨csdn博客地址,链接:http://blog.csdn.net/jtahstu

  
该分类临沂OJ地址:自家是地点,链接:http://acm.nyist.edu.cn/JudgeOnline/problemset.php?typeid=1

Now begin

1、

 

A+B Problem

光阴限制:3000
ms  |  内存限制:65535 KB

难度:0

描述
此题为练手用修,请我们总计一下a+b的价值

输入
输入两单数,a,b

输出
输出a+b的值

样例输入
2 3

样例输出
5

提示
例如:
C语言版:

#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
} 

C++版:

#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}

Java版:

import java.io.*;
import java.util.*;
public class Main
{
public static void main(String args[]) throws Exception
{
Scanner cin=new Scanner(System.in);
int a=cin.nextInt(),b=cin.nextInt();
System.out.println(a+b);
}
}

Java jdk 1.4 版

import java.io.*;
import java.util.*;

public class Main
{
public static void main (String args[]) throws Exception
{
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));

String line = stdin.readLine();
StringTokenizer st = new StringTokenizer(line);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a+b);
}
}

求留意不要输出了多指示性语句(如:“please input two
numbers”),不然会WrongAnswer的

#include<stdio.h>
int main()
{
   int a,b;
   scanf("%d%d",&a,&b);
   printf("%d\n",a+b);
} 
 
#include<iostream>
main(){std::cout<<(1<<31)-1;}        

4、

ASCII码排序

时限制:3000
ms  |  内存限制:65535 KB

难度:2

描述
输入三独字符(可以又)后,按每字符的ASCII码从小到死的逐一输出这四只字符。

输入
首先履输入一个数N,表示来N组测试数据。前面的N行输入多组数,每组输入数据仍旧霸占一行,有三单字符组成,之间无空格。

输出
于每组输入数据,输出一行,字符中用一个空格分开。

样例输入
2
qwe
asd

样例输出
e q w
a d s

来源
网络

上传者
naonao

#include<stdio.h>
#define MAX 3
char a[MAX];
int main() {
    int n;
    scanf("%d\n", &n);
    while (n--) {
        char x, y, z;
        scanf("%s", a);
        x = a[0];
        if (a[1] < x)
            x = a[1];
        if (a[2] < x)
            x = a[2];
        z = a[2];
        if (a[1] > z)
            z = a[1];
        if (a[0] > z)
            z = a[0];
        y = a[0] + a[1] + a[2] - x - z;
        printf("%c %c %c\n", x, y, z);
    }
    return 0;
}

#include "stdio.h"//最优程序
main()
{
    char a,b,c,d;
    int i;
    scanf("%d",&i);
    getchar();
    while(i--)
    {
        scanf("%c%c%c",&a,&b,&c);
        getchar();
        if (a>b) {d=a;a=b;b=d;}
        if (a>c) {d=a;a=c;c=d;}
        if (b>c) {d=b;b=c;c=d;}
        printf("%c %c %c\n",a,b,c);

    }

}

11、

奇偶数分离

时光限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
生一个整型偶数n(2<= n
<=10000),你假如召开的是:先将1交n中的富有奇数从小至很出口,再将具有的偶数从小到好出口。

输入
第一行有一个整数i(2<=i<30)表示有 i 组测试数据;
每组有一个整型偶数n。

输出
先是执行输出所有的奇数
老二实践输出所有的偶数

样例输入
2
10
14

样例输出
1 3 5 7 9
2 4 6 8 10

1 3 5 7 9 11 13 
2 4 6 8 10 12 14 

来源
[苗栋栋]原创

上传者
苗栋栋

# include"stdio.h"
int main() {
    int i, b, c, d, j, k;
    scanf("%d", &i);
    for (d = 0; d < i; d++) {
        scanf("%d", &b);
        for (k = 1; k <= b; k++) {
            if ((k % 2) == 1)
                printf("%d ", k);
        }
        printf("\n");
        for (j = 1; j <= b; j++) {
            if ((j % 2) == 0)
                printf("%d ", j);
        }
        printf("\n");
    }
    return 0;
}

#include<stdio.h>//最优程序
int main() {
    int n;
    scanf("%d", &n);
    int a;
    while (n--) {
        scanf("%d", &a);
        for (int i = 1; i <= a; i += 2)
            printf("%d ", i);
        puts("");
        for (int i = 2; i <= a; i += 2)
            printf("%d ", i);
        puts("");
    }
}

13、

Fibonacci数

时间限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
无穷数排列1,1,2,3,5,8,13,21,34,55…称为Fibonacci数排,它可递归地定义为
F(n)=1 ………..(n=1或n=2)
F(n)=F(n-1)+F(n-2)…..(n>2)
现要而来要第n只斐波纳奇数。(第1独、第二独还为1)

输入
首先进行是一个整数m(m<5)表示共有m组测试数据
老是测试数据只有发一行,且只发一个整形数n(n<20)

输出
对每组输入n,输出第n只Fibonacci数

样例输入
3
1
3
5

样例输出
1
2
5

来源
经题目

上传者
张云聪

#include <stdio.h>
int F(int n) {
    if (n == 1 || n == 2) {
        return 1;
    } else {
        return F(n - 1) + F(n - 2);
    }
}

int main() {
    int i, n;
    scanf("%d", &i);
    while (i--) {
        scanf("%d", &n);
        printf("%d\n", F(n));
    }
    return 0;
}

#include<stdio.h>//最优程序
main()
{
    int m,n,i,s1,s2;
    scanf("%d",&m);
    while(m--)
    {   scanf("%d",&n);
        for(i=3,s1=s2=1;i<=n;i++)
        {
            s1=s1+s2;s2=s1-s2;
        }
        printf("%d\n",s1);
    }
}

22、

素数求与题材

日范围:3000
ms  |  内存限制:65535 KB

难度:2

描述
前几天让你N个数(0<N<1000),现在要求您勾勒来一个主次,找有就N个数中之享有素数,并求和。

输入
率先实施给出整数M(0<M<10)代表有点组测试数据
每组测试数据第一举办被你N,代表该组测试数据的多寡。
搭下的N个数为要测试的数码,每个数仅次于1000

输出
每组测试数据结果占一履行,输出为来之测试数据的保有素数和

样例输入
3
5
1 2 3 4 5
8
11 12 13 14 15 16 17 18
10
21 22 23 24 25 26 27 28 29 30

样例输出
10
41
52

来源
[hzyqazasdf]原创

上传者
hzyqazasdf

#include<stdio.h>
#include<math.h>
int main() {
    int i, j, k, a, n, m, sum = 0;
    scanf("%d", &a);
    for (i = 0; i < a; i++) {
        scanf("%d", &n);
        for (j = 0; j < n; j++) {
            scanf("%d", &m);
            for (k = 2; k <= sqrt(m); k++) {
                if (m % k == 0)
                    break;
            }
            if (k > sqrt(m) && m != 1)
                sum = sum + m;
        }
        printf("%d\n", sum);
        sum = 0;
    }
    return 0;
}

#include<stdio.h>//最优程序
#include <math.h>
int main()
{
    int m,n,i,j,a[1000],flag=0;
    long s;
    scanf("%d",&m);
    while(m--)
    {
        s=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        for(i=0;i<n;i++)
        {
            if(a[i]==1) continue;
            flag=0;
            for(j=2;j<=sqrt(a[i]);j++)
            {
                if(a[i]%j==0)
                {flag=1;break;}         
            }
            if(flag==0) s+=a[i];
        }
    printf("%d\n",s);
    }
    return 0;
}        

24、

素数距离问题

日子范围:3000
ms  |  内存限制:65535 KB

难度:2

描述
当今让出而有些再三,要求您勾勒有一个次,输出这些整数相邻近来的素数,并出口其离长度。假诺左右闹分外去长度素数,则输出左边的值和相应距离。
固然输入的平头本身便是素数,则输出该素数本身,距离输出0

输入
首先行给出测试数据组数N(0<N<=10000)
连下去的N行每行有一个整数M(0<M<1000000),

输出
每行输出两独整数 A B.
其间A表示去相应测试数据以来的素数,B表示其中的偏离。

样例输入
3
6
8
10

样例输出
5 1
7 1
11 1

来源
经题目

上传者
hzyqazasdf

#include<stdio.h>
#include<math.h>
bool judge(int m);
int main()
{
    int N,n,i;
    scanf("%d",&N);
    while(N--)
    {
        scanf("%d",&n);
        if(judge(n))
        {
            printf("%d 0\n",n);
            continue;
        }
        for(i=1; n-i!=-1; i++)
        {
            if(judge(n-i))
            {
                printf("%d %d\n",n-i,i);
                break;
            }
            if(judge(n+i))
            {
                printf("%d %d\n",n+i,i);
                break;
            }
        }
    }
    return 0;
}
bool judge(int m)
{
    if(m==0||m==1)
        return false;
    int i;
    for(i=2; i<=sqrt(m); i++)
    {
        if(m%i==0)break;
    }
    if(i>sqrt(m))
        return true;
    return false;
}

#include<iostream>//最优程序
#include<cmath>
using namespace std;

bool isprime(int n)
{
    for(int k=2;k<=sqrt((double)n);k++)
        if((n%k)==0)
            return false;
    return true;
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int num,i,j;        
        cin>>num;
        if(num==1)
        {
            cout<<"2 1"<<endl;
            continue;
        }
        for(i=num;!isprime(i);i--); 
        for(j=num;!isprime(j);j++); 

        if((num-i)<(j-num))
            cout<<i<<' '<<(num-i)<<endl;
        else if((num-i)>(j-num))
            cout<<j<<' '<<(j-num)<<endl;
        else if((num-i)==(j-num))
            cout<<i<<' '<<(num-i)<<endl;
    }
}                

25、

A Famous Music Composer

时光限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
Mr. B is a famous music composer. One of his most famous work was his
set of preludes. These 24 pieces span the 24 musical keys (there are
musically distinct 12 scale notes, and each may use major or minor
tonality). The 12 distinct scale notes are: 

 A     A#=Bb  B        C       C#=Db D       D#=Eb  E       F        F#=Gb  G       G#=Ab

 

Five of the notes have two alternate names, as is indicated above with
equals sign. Thus, there are 17 possible names of scale notes, but only
12 musically distinct notes. When using one of these as the keynote for
a musical key, we can further distinguish between major and minor
tonalities. This gives 34 possible keys, of which 24 are musically
distinct. 

In naming his preludes, Mr. B used all the keys except the following 10,
which were named instead by their alternate names: 

 Ab minor  A# major A# minor  C# major  Db minor
 D# major  D# minor Gb major  Gb minor  G# major 

Write a program that, given the name of a key, give an alternate name if
it has one, or report the key name is unique. 

输入
Each test case is described by one line having the format “note
tonality”, where “note” is one of the 17 names for the scale notes given
above, and “tonality” is either “major” or “minor” (quotes for clarify).

输出
For each case output the required answer, following the format of the
sample.

样例输入
Ab minor
D# major
G minor

样例输出
Case 1: G# minor
Case 2: Eb major
Case 3: UNIQUE

来源
hdu

上传者
李如兵

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

char str[100];
int cas = 1;

int main()
{
    while(gets(str))
    {
        printf("Case %d: ",cas++);
        int i,j,len;
        len = strlen(str);
        if(str[1] == ' ')
            printf("UNIQUE\n");
        else
        {
            if(str[1] == '#')
            {
                if(str[0] == 'G')
                    printf("Ab");
                else
                    printf("%cb",str[0]+1);
            }
            else if(str[1] == 'b')
            {
                if(str[0] == 'A')
                printf("G#");
                else
                printf("%c#",str[0]-1);
            }
            for(i = 2;i<len;i++)
            printf("%c",str[i]);
            printf("\n");
        }
    }

    return 0;
}

#include<iostream>//最优程序
#include<string>
using namespace std;
string trans(string a){
    string b="";
    if(a[1]=='#'){
        b+=char((a[0]-'A'+1)%7+'A');
        b+='b';
    }else{
        b+=char((a[0]-'A'+6)%7+'A');
        b+='#';
    }
    return b;
}
int main(){
    string a,b;
    for(int t=1; cin>>a>>b; t++){
        cout<<"Case "<<t<<": ";
        if(a.length()==1)
            cout<<"UNIQUE"<<endl;
        else
            cout<<trans(a)<<" "<<b<<endl;
    }
    return 0;
}

31、

5个数求最值

岁月限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
规划一个由5个整数中赢得最好小数和极端特别勤之次序

输入
输入才出同样组测试数据,为五个未高于1万的正整数

输出
输出两只数,第一独为当下两个数惨遭的无限小值,第二只为即六个数惨遭之最深价值,五只数字为空格格开。

样例输入
1 2 3 4 5

样例输出
1 5

来源
C语言课本第四章第一挥毫

上传者
张云聪

#include<stdio.h>
int main() {
    int a[5], temp, i, j;
    for (i = 0; i < 5; i++)
        scanf("%d", &a[i]);
    for (j = 0; j < 5; j++)
        for (i = 0; i < 4; i++)
            if (a[i] > a[i + 1]) {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
    printf("%d %d", a[0], a[4]);
    return 0;
}
 
#include<iostream>//最优程序
#include<iterator>
#include<algorithm>
using namespace std;
int main()
{
    int a[5];
    copy(istream_iterator<int>(cin),istream_iterator<int>(),a);
    cout<<*min_element(a,a+5)<<" "<<*max_element(a,a+5)<<endl;
}        

33、

蛇形填数

岁月限定:3000
ms  |  内存限制:65535 KB

难度:3

描述
在n*n方陈里填入1,2,…,n*n,要求填写成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4

输入
直接输入方陈的维数,即n的值。(n<=100)

输出
出口结果是蛇形方陈。

样例输入
3

样例输出
7 8 1
6 9 2
5 4 3

来源
算法经典

上传者
老总

#include"stdio.h"
#include<stdlib.h>
int main()
{
    int a[109][109]= {0},i,j,k,n,m,top,x,y;
    top=1;
    scanf("%d",&n);
    a[x=0][y=n-1]=1;
    while(top<n*n)
    {
        while(x+1<n&&!a[x+1][y]) a[++x][y]=++top;
        while(y-1>=0&&!a[x][y-1]) a[x][--y]=++top;
        while(x-1>=0&&!a[x-1][y]) a[--x][y]=++top;
        while(y+1<n&&!a[x][y+1]) a[x][++y]=++top;
    }

    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)

            printf("%d ",a[i][j]);
        printf("\n");
    }
    //system("33.exe\n");
}
 
#include<stdio.h>//最优程序
int main()
{
    int a,b,c,d,n,sum=1;
    int yi[101][101];
    scanf("%d",&n);
    for(a=0;a<=(n-1)/2;a++)
    {
        for(b=a;b<=n-a-1;b++)
            yi[b][n-a-1]=sum++;
        for(b=n-2-a;b>=a;b--)
            yi[n-a-1][b]=sum++;
        for(b=n-a-2;b>=a;b--)
            yi[b][a]=sum++;
        for(b=a+1;b<n-a-1;b++)
            yi[a][b]=sum++;
    }
    for(c=0;c<n;c++)
    {
        for(d=0;d<n;d++)
            printf("%d ",yi[c][d]);
        printf("\n");
    }
}        

34、

韩信点兵

时限定:3000
ms  |  内存限制:65535 KB

难度:1

描述

传韩信才智过口,从不直接清点好军队的口,只要让老将先后为五个人数一如既往免除、六人一清除、七人同样解除地变换队形,而异每便仅掠一目阵容的排尾就领会究竟人数了。输
入3单非负整数a,b,c
,表示每种队形排尾的食指(a<3,b<5,c<7),输出总人数之极致小值(或报告无解)。已知晓总人数未小于10,不超100

输入
输入3只非负整数a,b,c
,表示每种队形排尾的食指(a<3,b<5,c<7)。例如,输入:2 4 5

输出
输出总人数的不过小值(或报无解,即出口No answer)。实例,输出:89

样例输入
2 1 6

样例输出
41

来源
经算法

上传者
老板

#include<iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    int n=(a*70+b*21+c*15)%105;
    if(n>100||n<10) cout<<"No answer"<<endl;
    else cout<<n<<endl;
}   

39、

水仙花数

时刻限定:1000
ms  |  内存限制:65535 KB

难度:0

描述
呼吁判断一个数凡是休是水仙花数。
里面水仙花数定义各种位数立方和齐它自己的老三员数。

输入
暴发多组测试数据,每组测试数据为富含一个整数n(100<=n<1000)
输入0代表程序输入完毕。

输出
假定n是水仙花数就输出Yes
否则输出No

样例输入
153
154
0

样例输出
Yes
No

来源
C语言课本习题改编

上传者
张云聪

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int n=0;
    //freopen("input.txt","r",stdin);
    while(scanf("%d",&n)==1)
    {
        if(n!=0)
        {
            if (n==153||n==370||n==371||n==407) printf("Yes\n");
            else printf("No\n");
        }
    }
    return 0;
}
  
#include<iostream>//最优程序
using namespace std;
int main()
{
    int a;
    while(1)
    {
        cin>>a;
        if(a==0) break;
        cout<<((a==153||a==370||a==371||a==407)?"Yes":"No")<<endl;
    }
}        

40、

公约数和倍

岁月限制:1000
ms  |  内存限制:65535 KB

难度:1

描述
小明为一个题材吃难止了,现在急需您帮拉。问题是:给起源儿单刚刚整数,求来它的最大公约数和最小公倍数。

输入
先是行输入一个整数n(0<n<=10000),表示来n组测试数据;
就的n行输入三个整数i,j(0<i,j<=32767)。

输出
出口每组测试数据的最大公约数和最小公倍数

样例输入
3
6 6
12 11
33 22

样例输出
6 6
1 132
11 66

来源
[苗栋栋]原创

上传者
苗栋栋

#include<stdio.h>
int main() {
    int a, b, c, n, k;
    scanf("%d", &n); //输入一个整数n(0<n<=10000),表示有n组测试数据 
    while (n--) {
        scanf("%d %d", &a, &b); //输入两个整数 
        k = a * b;
        while (b != 0) {
            c = a % b;
            a = b;
            b = c;
        }
        printf("%d %d\n", a, k / a);
    }
    return 0;
}
 
import java.io.*;
import java.util.*;

public class Main {

    public static int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }

    public static Scanner count = new Scanner(System.in);

    public static void main(String[] arges) {
        int n = count.nextInt();
        while ((n--) > 0) {
            int a = count.nextInt(), b = count.nextInt();
            System.out.println(gcd(a, b) + " " + a * b / gcd(a, b));
        }
        count.close();
    }
}
        
 
#include<stdio.h>
int main()
{
    unsigned int u,v,r,s,i,d;
    scanf("%u",&s);
    for(i=1;i<=s;i++)
    {
        scanf("%u%u",&u,&v);
        d=u*v;
        while(v!=0)
        {
            r=u%v;
            u=v;
            v=r;
        }
        printf("%u %u\n",u,d/u);
    }
    return 0;
}        

41、

其五只数由小至好排序

光阴限制:3000
ms  |  内存限制:65535 KB

难度:0

描述
今昔设描写一个程序,实现让两个数排序的法力

输入
输入五只刚刚整数

输出
吃输入的老两个正整数排序

样例输入
20 7 33

样例输出
7 20 33

来源
[张洁烽]原创

上传者
张洁烽

import java.util.Scanner;

public class Main
{
public static void main(String[] args)
    {
        int a,b,c,n;
        Scanner num=new Scanner(System.in);
        System.out.print("");
        a=num.nextInt();
        System.out.print("");
        b=num.nextInt();
        System.out.print("");
        c=num.nextInt();
        if(a>b) {
            n=a;a=b;b=n;
        }

        if(b>c) {
            n=b;b=c;c=n;
        }
        if(a>c) {
            n=a;a=c;c=n;
        }
        System.out.println(a+" "+b+" "+c);
    }
}
 
#include <stdio.h>//最优程序
int main()
{
    int a,b,c,an[3],i,t,j,max,flag;
    scanf ("%d %d %d",&an[0],&an[1],&an[2]);
    for (i=0;i<3;i++)
    {
        t=max=an[i];
        flag=i;
        for (j=i;j<3;j++)
            if (an[j]>t) 
            {
                max=an[j];
                flag=j;
            };
        t=an[i];
        an[i]=max;
        an[flag]=t;
    }
    for (i=2;i>=0;i--)
        printf ("%d ",an[i]);
    return 0;
}
       

56、

阶乘因式分解(一)

时间限定:3000
ms  |  内存限制:65535 KB

难度:2

描述

输入
先是执是一个整数s(0<s<=100),表示测试数据的组数
随着的s行, 每行有少数个整数n,m。

输出
输出m的个数。

样例输入
2
100 5
16 2

样例输出
24
15

来源
网络

上传者
苗栋栋

#include <stdio.h>
int main(void) {
    int N, n, m, count;
    scanf("%d", &N);
    while (N--) {
        count = 0;
        scanf("%d%d", &n, &m);
        while (n) {
            n = n / m;
            count = count + n;
        }
        printf("%d\n", count);

    }
    return 0;
}
 
#include<iostream>//最优程序
using namespace std;
int get(int n,int num)
{
    if(n==0) return 0;
    else return get(n/num,num)+n/num;
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int a,b;
        cin>>a>>b;
        cout<<get(a,b)<<endl;
    }
}        

**57、


6174问题

光阴限制:1000
ms  |  内存限制:65535 KB

难度:2

描述
如若你发出一个各位数字互不相同的季各项数,把具有的数字从生到稍微排序后得到a,从小至卓殊后获b,然后用a-b替换原来是数,并且继续操作。例如,从
1234起身,依次能够赢得4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了其和谐!现在设而勾勒一个
程序来判定一个季个数经多少坏这样的操作会出现循环,并且求出操作的次数

本输入1234执各样是1234->3087->8352->6174->6174,输出是4

输入
率先推行输入n,代表来n组测试数据。
紧接下n行每行都写一个各位数字互不相同的季各数

输出
经过多少次面描述的操作才可以出现循环

样例输入
1
1234

样例输出
4

来源
[张洁烽]原创

上传者
张洁烽

#include<stdio.h>
int main()
{
    int n,m,a[4],i,j,count,max,min,t;
    scanf("%d",&n);
    while(n--)
    {
        count=1;
        scanf("%d",&m);
        while(m!=6174)
        {
            for(i=0; i<4; i++)
            {
                a[i]=m%10;
                m=m/10;
            }
            for(i=0; i<4; i++)
                for(j=i+1; j<4; j++)
                    if(a[i]<a[j])
                    {
                        t=a[i];
                        a[i]=a[j];
                        a[j]=t;
                    }
            max=a[0]*1000+a[1]*100+a[2]*10+a[3];
            min=a[3]*1000+a[2]*100+a[1]*10+a[0];
            m=max-min;
            count++;
        }
        printf("%d\n",count);
    }
    return 0;
}
  
#include<iostream>//最优程序
#include<algorithm>
#include<stdio.h>
using namespace std;
int main()
{
    //freopen("1.txt","r",stdin);
    int k;
    cin>>k;
    while(k--)
    {
        int n,a[4],n1,n2;
        scanf("%d",&n);
        int s=1;
        while(n!=6174)
        {
            a[0]=n%10;
            a[3]=n/1000;
            a[1]=n/10%10;
            a[2]=n/100%10;
            sort(a,a+4);
            n1=1000*a[3]+100*a[2]+10*a[1]+a[0];
            n2=1000*a[0]+100*a[1]+10*a[2]+a[3];
            n=n1-n2;
            s++;
        }
        printf("%d\n",s);
    }
}        

**60、


何人抱了参天奖学金

日子限制:1000
ms  |  内存限制:65535 KB

难度:2

描述
    某校的老办法是当各国学期的期末考试之后发放奖学金。发放的奖学金共有五种植,获取之规格各自不同:
  1)
院士奖学金,每人8000处女,期末平均成绩领先80分(>80),并且在以学期内上1首或1篇上述随笔的学童均只是获取;
  2)
五四奖学金,每人4000第一位,期末平均战表超乎85区划(>85),并且班级评议战表领先80分(>80)的生都只是拿到;
  3)
战绩出色奖,每人2000初,期末平均成绩超乎90分(>90)的生均只是抱;
  4)
西部奖学金,每人1000首先,期末平均成绩领先85瓜分(>85)的西边省份学生均只是获取;
  5)
班级进献奖,每人850第一届,班级评议成绩超过80分(>80)的学员干部都只是取得;
  只要符合条件就得得奖,每起奖学金的得奖人数并未界定,每名学生也得以取得多件奖学金。例如姚林的底平均战表是87分开,班级评议战表82分开,同时他尚是平位学员干部,那么他可以同时取得五四奖学金和班级进献奖,奖金总额是4850老大。
  现在深受起多学童的连带数据,请统计哪些同学取得的奖金总额最高(尽管总起同学能满足获奖学金的尺度)。

输入

一行输入数据N,表示测试数据组数(0<N<100),每组测试数据输入的首先履是一个整数X(1
<= X <=
100),表示学生的总和。接下来的X行每行是同等各学生的多少,从左望左侧依次是姓名,期末平均成绩,班级评议战绩,是否是学生干部,是否是西方省份学生,
以及上的小说数。姓名是出于大小写英文字母组成的长短不超过20之字符串(不含空格);期末平均成绩跟班级评议战表依旧0及100期间的平头(包括0以及
100);是否是学员干部和是否是西方省份学生分别就此一个字符表示,Y表示是,N表示未是;公布之舆论数凡是0至10的整数(包括0和10)。每半只相邻数
据项中为此一个空格分隔。

输出
 
每组测试数据输出包括三执行,第一执行是赢得无限多奖金的学习者的真名,第二实践是即刻名叫学童得到的奖金总额。即便发生零星各仍旧少各以上之学童取的奖金最多,输出他们之中以输入文件中出现极其早的学生的全名。第三推行是立X只学生拿到的奖学金的总额。

样例输入
1
4
YaoLin 87 82 Y N 0
ChenRuiyi 88 78 N Y 1
LiXin 92 88 N N 0
ZhangQin 83 87 Y N 1

样例输出
ChenRuiyi
9000
28700

来源
NOIP2005

上传者
hzyqazasdf

#include <iostream>
using namespace std;
int main(void)
{
   string str,_str;
   char ca,cb;
   int n,m,x,y,z,s,sum,max;
   cin>>n;
   while(n--)
   {
      cin>>m;
      max = sum = 0;
      while(m--)
      { 
        s = 0;
        cin>>str>>x>>y>>ca>>cb>>z;
        if(x>80&&z>0)
        {
            s += 8000;
            sum += 8000;
        }
        if(x>85&&y>80)
        {
            s += 4000;
            sum += 4000;
        }
        if(x>90)
        {
            s += 2000;
            sum += 2000;
        }
        if(x>85&&cb == 'Y')
        {
            s += 1000;
            sum += 1000;
        }
        if(y>80&&ca == 'Y')
        {
            s += 850;
            sum += 850;
        }
        if(max < s)
        {
            max = s;
            _str = str;
        }
      }
      cout<<_str<<endl<<max<<endl<<sum<<endl;
   }    
}  
 
#include<iostream>//最优程序
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;
int calc(int qm,int py,bool gb,bool xb,bool lw)
{
    int all=0;
    if(qm>80 && lw) all+=8000;
    if(qm>85&& py>80) all+=4000;
    if(qm>90) all+=2000;
    if(xb&&qm>85) all+=1000;
    if(gb&&py>80) all+=850;
    return all;
}

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int m;
        cin>>m;
        int max_num=0,all=0;
        string max_stu;
        while(m--)
        {
            int qm,py,lw;
            string xm,gbs,xbs;
            cin>>xm>>qm>>py>>gbs>>xbs>>lw;
            bool gb=gbs=="Y",xb=xbs=="Y";
            int num=calc(qm,py,gb,xb,lw>0);
            all+=num;
            if(num>max_num) {max_num=num;max_stu=xm;}
        }
        cout<<max_stu<<endl<<max_num<<endl<<all<<endl;
    }
}        

**62、


笨小熊

光阴范围:2000
ms  |  内存限制:65535 KB

难度:2

描述
笨小熊的词汇量很有点,所以每趟做立陶宛语选取题的时刻还老头痛。但是他找到了一致栽办法,经考试讲明,用这种情势去采取选项之时光选对的几乎引导大深!
这种方法的现实性描述如下:假诺maxn是单词遭起次数最多的字母之面世次数,minn是单词遭冒出次数最少的字母的起次数,假使maxn-minn是一个质数,那么蠢小熊就认为当下是独Lucky
Word,这样的无非词很可能就是是是的答案。

输入
第一进行数据N(0<N<100)表示测试数据组数。
每组测试数据输入才发一行,是一个单词,其中仅或出现小写字母,并且长度小于100。

输出
每组测试数据输出共少行,第一举办是一个字符串,假要输入的的单词是Lucky
Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二实施是一个平头,即便输入单词是Lucky Word,输出maxn-minn的值,否则输出0

样例输入
2
error
olympic

样例输出
Lucky Word
2
No Answer
0

来源
NOIP2008

上传者
hzyqazasdf

#include<iostream>
#include<string>
using namespace std;
int prime_number(int n)
{
    if(n==1||n==0)return 0;
    if(n==2)return 1;
    else
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)return 0;
    }
    return 1;
}

int maxn_minn(string a)
{
    int b[101]={0};
    for(int i=0; i<a.size(); i++)
            for(int j=0; j<a.size(); j++)
            {
                if(a[i]==a[j])
                    b[i]++;
            }
            int maxn=b[0];
            int minn=b[0];
            for(int i=0;i<a.size();i++)
            {
                if(b[i]>maxn)maxn=b[i];
                if(b[i]<minn)minn=b[i];
            }
            return maxn-minn;
}

int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        string a;
        cin>>a;
        prime_number(maxn_minn(a))==1?cout<<"Lucky Word\n"<<maxn_minn(a)<<endl:cout<<"No Answer\n"<<"0"<<endl;
    }
    return 0;
}
  
#include<iostream>//最优程序
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;

bool isPrime(int n)
{
    if(n==0) return false;
    if(n==1) return false;
    if(n==2) return true;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0) return false;
    }
    return true;

}
int min_e(int *p,int *q)
{
    int m=1000;
    for(int* i=p;i!=q;i++)
    {
        if(*i<m && *i!=0) m=*i;
    }
    return m;
}
int main()
{
        int n;
    string str;
    cin>>n;
    while(n--)
    {
        int count[26]={0};
        cin>>str;
        for(int i=0;i!=str.size();++i)
        {
            ++count[str[i]-'a'];
        }
        int nn=*max_element(count,count+26)-min_e(count,count+26);
        if(isPrime(nn)) cout<<"Lucky Word"<<endl<<nn<<endl;
        else cout<<"No Answer"<<endl<<0<<endl;

    }
}        

**64、


鸡兔同笼

日限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
都知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数码,如若无解,则输出“No
answer”(不要引号)。

输入
第一尽输入一个数据a,代表连着下共有几组数,在连下去的(a<10)
a行里,每行都起一个n跟m.(0<m,n<100)

输出
出口鸡兔的个数,或者No answer

样例输入
2
14 32
10 16

样例输出
12 2
No answer

来源
[张洁烽]原创

上传者
张洁烽

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int i,m,n,N;
    scanf("%d",&N);
    while(N--)
    {
        int x,y,a=0;
        scanf("%d%d",&n,&m);
        for(i=0;i<=n;i++)
        {
            if(i*2+(n-i)*4==m)
            {
             a=1;
            printf("%d %d\n",i,n-i);break;
            }
        }
        if(a==0)printf("No answer\n");
    }
    return 0;
} 
 
#include<iostream>//最优程序
using namespace std;
int main()
{
   int n,a,b,p,q;
   cin>>n;
   while(n--)
   {
      cin>>a>>b;
      q=(b-2*a)/2;
      p=a-q;
      if(p<0 ||q<0 || b%2) cout<<"No answer"<<endl;
      else cout<<p<<" "<<q<<endl;
   }
}                        

**65、


其他一样种植阶乘问题

时刻范围:3000
ms  |  内存限制:65535 KB

难度:1

描述

世家还知道阶乘这么些概念,举个大概的事例:5!=1*2*3*4*5.今我们引入一栽新的阶乘概念,将原先的每个数相乘变为i不大于n的具有奇数相乘例如:5!!=1*3*5.现在明白现在那种阶乘的意思了咔嚓!

当今公的天职是呼吁出1!!+2!!……+n!!的正确值(n<=20)

输入
首先行输入一个a(a<=20),代表共有a组测试数据
紧接下去a行各行输入一个n.

输出
各行输出结果一个整数R表示1!!+2!!……+n!!的正确值

样例输入
2
3
5

样例输出
5
23

来源
[张洁烽]原创

上传者
张洁烽

#include <stdio.h>
int f(int n) {
    int i, s = 1;
    for (i = 1; i <= n; i += 2)
        s *= i;
    return s;
}
int main() {
    int a, n, i, s;
    scanf("%d", &a);
    while (a--) {
        s = 0;
        scanf("%d", &n);
        for (i = 1; i <= n; i++)
            s += f(i);
        printf("%d\n", s);
    }
    return 0;
}    
 
/*
#include<iostream>
using namespace std;
int f(int n)
{
    if(n%2) return n==1?1:n*f(n-2);
    return f(n-1);
}
int g(int n)
{
    return n?g(n-1)+f(n):0;
}
int main()
{
    int n,m;
    cin>>n;
    while(n--)
    {
        cin>>m;
        cout<<g(m)<<endl;
    }
}*/
#include<iostream>//最优程序
using namespace std;
int main()
{
    int n,m,r[]={0,1,2,5,8,23,38,143,248,1193,2138,12533,22928,158063,293198,2320223,4347248,38806673,73266098,727995173,1382724248};
    cin>>n;
    while(n--)
    {
        cin>>m;
        cout<<r[m]<<endl;
    }
}        

**72、


Financial Management

日限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
Larry graduated this year and finally has a job. He’s making a lot of
money, but somehow never seems to have enough. Larry has decided that he
needs to grab hold of his financial portfolio and solve his financing
problems. The first step is to figure out what’s been going on with his
money. Larry has his bank account statements and wants to see how much
money he has. Help Larry by writing a program to take his closing
balance from each of the past twelve months and calculate his average
account balance.

输入
The input will be twelve lines. Each line will contain the closing
balance of his bank account for a particular month. Each number will be
positive and displayed to the penny. No dollar sign will be included.

输出
The output will be a single number, the average (mean) of the closing
balances for the twelve months. It will be rounded to the nearest penny,
preceded immediately by a dollar sign, and followed by the end-of-line.
There will be no other spaces or characters in the output.

样例输入
100.00
489.12
12454.12
1234.10
823.05
109.20
5.27
1542.25
839.18
83.99
1295.01
1.75

样例输出
1581.42

来源
[张洁烽]原创

上传者
张洁烽

#include "stdio.h"
int main(int argc, char const *argv[])
{
    double sum=0,a;
    int n=12;
   // freopen("input.txt","r",stdin);
    while(n--)
    {
        scanf("%lf",&a);
        sum+=a;
    }
    printf("%.2lf\n",sum/12);
    return 0;
}
   
#include<iostream>//最优程序
#include<iomanip>
using namespace std;

int main()
{
    double sum=0,a;
    for(int i=0;i<12;i++)
    {
        cin>>a;
        sum+=a;
    }
    cout<<fixed<<setprecision(2)<<sum/12.0<<endl;
}        

**74、


小学生算术

光阴范围:3000
ms  |  内存限制:65535 KB

难度:1

描述
洋洋小学生在就学加法时,发现“进位”特别爱错。你的职责是总结两独三员数以相加时要有些坏进位。你编的顺序应该可以连接处理多组数,直到读到六个0(这是输入了标记)。

输入
输入两独正整数m,n.(m,n,都是三位数)

输出
输出m,n,相加时得进位多少坏。

样例输入
123 456
555 555
123 594
0 0

样例输出
0
3
1

来源
[张洁烽]原创

上传者
张洁烽

#include <stdio.h>
int main()
{
    int m,n,i,j;
    int a[3],b[3];
    while(scanf("%d%d",&m,&n),m!=0||n!=0)
    {
        a[0]=m/100;
        a[1]=(m-100*a[0])/10;
        a[2]=m%10;
        b[0]=n/100;
        b[1]=(n-100*b[0])/10;
        b[2]=n%10;
        j=0;
        for(i=2; i>=0; i--)
        {
            if(a[i]+b[i]>=10)
            {
                j++;
                a[i-1]+=1;//要考虑进位问题
            }
        }
        printf("%d\n",j);
    }
    return 0;
}   
 
 
#include<stdio.h>
int main()
{
    int a,b,c,d,e,f,n,m,i;
    for(;;)
    {
        scanf("%d%d",&n,&m);
        if(n==0&&m==0)
            return 0;
        else
        {
            i=0;
            a=n/100;b=n%100/10;c=n%10;
            d=m/100;e=m%100/10;f=m%10;
            if(c+f>=10)
            {i+=1;b+=1;}
            if(b+e>=10)
            {i+=1;a+=1;}
            if(a+d>=10)
            {i+=1;}
            printf("%d\n",i);
        }
    }
  return 0;
}
              

**75、


日期总括

日子限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
如题,输入一个日子,格式如:2010 10 24 ,判断这无异龙是立无异于年被之第几天。

输入
率先执输入一个数N(0<N<=100),表示来N组测试数据。后边的N行输入多组输入数据,每行的输入数据如故一个随题目要求格式输入的日子。

输出
每组输入数据的输出占一实施,输出判断有底天数n

样例输入
3
2000 4 5
2001 5 4
2010 10 24

样例输出
96
124
297

来源
[naonao]改编C语言习题

上传者
naonao

#include <iostream>
using namespace std;
int leap(int a)
{
    if(a%4==0&&a%100!=0||a%400==0)
        return 1;
    else return 0;
}
int number(int year,int m,int d)
{
    int sum=0,i,j,k,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    if(leap(year)==1)
        for(i=0;i<m-1;i++)
            sum+=b[i];
    else 
        for(i=0;i<m-1;i++)
            sum+=a[i];
            sum+=d;
        return sum; 
}
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        int year,month,day,n;
        cin>>year>>month>>day;
        n=number(year,month,day);
        cout<<n<<endl;
    }
    return 0;
}   
 
#include<stdio.h>//最优程序
int main()
{
    int a,b=0,c,y,m,d,fib;
    scanf("%d",&a);
    while(a--)
    {
        scanf("%d %d %d",&y,&m,&d);
        if(y%400==0||y%100!=0&&y%4==0)
            fib=29;
        else fib=28;
        for(c=1;c<=m;c++)
        switch(c-1)
        {
           case 1:
           case 3:
           case 5:
           case 7:
           case 8:
           case 10:b+=31;break;
           case 2:b+=fib;break;
           case 4:
           case 6:
           case 9:
           case 11:b+=30;break;
        }
        b+=d;
        printf("%d\n",b);
        b=0;
    }
    return 0;
}        

**77、


开灯问题

日子限定:3000 ms  |  内存限制:65535 KB

难度:1

描述
有 n盏灯,编号为1~n,第1个体拿有灯打开,第2民用照下所有编号也2
底倍数的开关(这么些灯将被合),第3
个人按下有所编号也3底倍数的开关(其中关掉的灯将被打开,开在的灯将被关门),依此类推。一共发k个人,问最终出什么样灯开着?输入:n和k,输出开在的
灯编号。k≤n≤1000

输入
输入一组数据:n和k

输出
输出开着的灯编号

样例输入
7 3

样例输出
1 5 6 7

来源
藏算法

上传者
COO

#include<stdio.h>
int main( )
{
    int n, k, j, open,i;
    scanf("%d%d", &n, &k );
    for(i = 1 ; i <= n ; i++ )
    {
        open = 1;
        for( j = 2 ; j <= k ; j++ )
        {
            if( i % j == 0 )
                open = (open+1) % 2;
        }
        if( open )
            printf("%d ", i );
    }
    return 0;
}  
 
#include <iostream>//最优程序
using namespace std;
int main()
{
    int n,k,a[1000],i;
    cin>>n>>k;
    for(i=0;i<n;i++)
        a[i]=1;
    for(i=2;i<=k;i++)
        for(int j=0;j<n;j++)
        {
            if((j+1)%i==0)
            if(a[j]==0)a[j]=1;
            else a[j]=0;
        }
        for(i=0;i<n;i++)
            if(a[i]==1)cout<<i+1<<" ";
            cout<<endl;
    return 0;
}              

**94、


cigarettes

时刻限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
Tom has many cigarettes. We hypothesized that he has n cigarettes and
smokes them

one by one keeping all the butts. Out of k > 1 butts he can roll a
new cigarette.
Now,do you know how many cigarettes can Tom has?

输入
First input is a single line,it’s n and stands for there are n
testdata.then there are n lines ,each line contains two integer numbers
giving the values of n and k.

输出
For each line of input, output one integer number on a separate line
giving the maximum number of cigarettes that Peter can have.

样例输入
3
4 3
10 3
100 5

样例输出
5
14
124

来源
[rooot]原创

上传者
rooot

#include<iostream>
using namespace std;
int main()
{
    int n;cin>>n;
    while(n--)
    {
        int a,b;
        cin>>a>>b;
        int sum=0;
        sum+=a;
        while(a>=b)
        {
            a-=b;//只要a-b还大于b , 就相当于a会多一个
            a++;
            sum++;
        }
        cout<<sum<<endl;
    }
    return 0;
}
   
#include "stdio.h"
#include<fstream>
int main()
{
    //freopen("d:\\1.txt","r",stdin);
    //freopen("d:\\2.txt","w",stdout);
    int m;
    scanf("%d",&m);
    while(m--)
    {
        int n,k,sum;
        scanf("%d%d",&n,&k);
        sum=n;
        while(n/k)                   
        { sum+=n/k;  n=n/k+n%k; }
        printf("%d\n",sum);
    }
    return 0;
}              

**96、


n-1位数

岁月范围:3000
ms  |  内存限制:65535 KB

难度:1

描述
已知w是一个大于10但无盖1000000的无符号整数,若w是n(n≥2)位之平头,则请出w的后n-1号的数。

输入
第一行为M,表示测试数据组数。
通下去M行,每行包含一个测试数据。

输出
出口M行,每行为对应行的n-1各样数(忽略前缀0)。假使除去高位外,此外各队都也0,则输出0。

样例输入
4
1023
5923
923
1000

样例输出
23
923
23
0

来源
[rooot]原创

上传者
rooot

#include<stdio.h><pre name="code" class="cpp">//较简单的做法    
int main()
{
    int num;
    int M;
    scanf("%d",&num);
    while(num--)
    {
        scanf("%d",&M);
        int i=10;
        while(M/i>=10)
        {
            i=i*10;
        }
        printf( "%d\n" ,M%i);
    }
}  
 
#include<cstdio>//最优程序
int main()
{
    int n,m;
    scanf("%d",&n);
    while(n--)
    {
        scanf("\n%*c%d",&m);
        printf("%d\n",m);
    }
}                

97、

弟兄郊游问题

日子限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
哥们俩骑车郊游,表弟先出发,每分钟X米,M分钟后,表弟带一漫漫狗出发。以各国分钟Y米的速去追逐小弟,而狗则因各级分钟Z米的快慢为小弟跑去,追上二哥后还要即重返,直到小叔子追上大哥平日,狗跑了不怎么米?

输入
先是实践输入一个平头N,表示测试数据的组数(N<100)每组测试数据占一执,是四独刚刚整数,分别为M,X,Y,Z(数据保证X<Y<Z)

输出
出口狗跑的路径,结果保留小数点后少员。

样例输入
1
5 10 15 20

样例输出
200.00

来源
经数学题目

上传者
张云聪

#include "stdio.h"
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        double m,x,y,z,s;
        scanf("%lf%lf%lf%lf",&m,&x,&y,&z);
        s=x*m/(y-x)*z;
        printf("%.2lf\n",s);
    }
    return 0;
}  
 
#include<iostream>//最优程序
#include<stdio.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int s,a,b,c;
        cin>>s>>a>>b>>c;
        printf("%.2lf\n",s*a/(double)(b-a)*c);
    }

}              

**98、


成换

时间限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
输入一个百分制的成绩M,将这么些更换成为相应的流,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;

输入
先是实践是一个平头N,表示测试数据的组数(N<10)
每组测试数据占一行,由一个整数M组成(0<=M<=100)。

输出
对每组输入数据,输出一行。

样例输入
2
97
80

样例输出
A
B

来源
hdu2004

上传者
张云聪

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int n,a;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&a);
        if(90<=a&&a<=100) printf("A\n");
        if(80<=a&&a<=89) printf("B\n");
        if(70<=a&&a<=79) printf("C\n");
        if(60<=a&&a<=69) printf("D\n");
        if(0<=a&&a<=59) printf("E\n");
    }
    return 0;
}    
 
#include<iostream>//最优程序
using namespace std;
int main()
{
int n,s;
cin>>n;
while(n--)
{
cin>>s;
switch(s/10)
{
case 10:
case 9:cout<<"A"<<endl;break;
case 8:cout<<"B"<<endl;break;
case 7:cout<<"C"<<endl;break;
case 6:cout<<"D"<<endl;break;
default:cout<<"E"<<endl;break;
}
}
}        

**100、


1的个数

时刻限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
小南刚学了第二进制,他想精晓一个频繁之二进制表示中发出微微只1,你可知帮忙他形容一个先后来就那么些职责为?

输入
先是实践输入一个平头N,表示测试数据的组数(1<N<1000)
每组测试数据只有发一行,是一个整数M(0=<M<=10000)

输出
每组测试输出占一履行,输出M的二进制表示中1的个数

样例输入
3
4
6
7

样例输出
1
2
3

来源
[张云聪]原创

上传者
张云聪

#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        int a,i,count=0;
        cin>>a;
        while(a)
        {
            if(a%2==1) count++;
            a/=2;
        }
        cout<<count<<endl;
    }
    return 0;
}  
 
#include<stdio.h>//最优程序
main(){int n,m,s;scanf("%d",&n);while(n--){scanf("%d",&m);s=0;while(m)m&=m-1,s++;printf("%d\n",s);}}        

101、

少数沾离

时限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
输入两沾坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),总计并出口两触及中的离。

输入
率先执输入一个整数n(0<n<=1000),表示有n组测试数据;
进而每组占一履行,由4独实数组成,分别代表x1,y1,x2,y2,数据里面由此空格隔开。

输出
于每组输入数据,输出一行,结果保留少数号小数。

样例输入
2
0 0 0 1
0 1 1 0

样例输出
1.00
1.41

来源
[苗栋栋]原创

上传者
苗栋栋

#include<math.h>
#include<stdio.h>
int main()
{
    int n;
    double l,x1,x2,y1,y2;
    // freopen("input.txt","r",stdin);
    scanf("%d",&n);
    while(n--)
    {
    scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
    l=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    printf("%.2lf\n",l);
    }
    return 0;
} 
 
#include<iostream>//最优程序
#include<math.h>
#include<iomanip>
using namespace std;
int main()
{
    /*freopen("1.txt","r",stdin);
    freopen("2.txt","w",stdout);*/

double x1,x2,y1,y2,m;
double a;
cin>>m;
while(m--)
{
    cin>>x1>>y1>>x2>>y2;
    a=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    cout.setf(ios::fixed); 
    cout<<setprecision(2)<<a<<endl;
}
return 0;
}

**111、


分数加减法

日子限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
编排一个C程序,实现两独分数的加减法

输入
输入包含多推行数据
每行数据是一个字符串,格式是”a/boc/d”。
内a, b, c, d是一个0-9之平头。o是运算符”+”或者”-“。

数据以EOF结束
输入数据保证合法

输出
对此输入数据的诸一样执输出六只分数的运算结果。
在意结果应顺应书写习惯,没有剩余的记号、分子、分母,并且化简至最简分数

样例输入
1/8+3/8
1/4-1/2
1/3-1/3

样例输出
1/2
-1/4
0

来源
水题竞技

上传者
hzyqazasdf

#include <iostream>
#include<cstdlib>
using namespace std;
int yinshu(int x,int y)
{
    if(x<y)
    {
        int tmp;
        tmp = x;
        x = y;
        y = tmp;
    }
    if(x%y == 0)
        return abs(y);
    else
        return yinshu(y,x%y);
}

int main(void)//最优程序
{
    int a,b,c,d;
    char optr,num;
    while(cin >> a >> num >> b >> optr >> c >> num >> d)
    {
        int x,y;
        switch(optr)
        {
        case '+':
        {
            x = a*d+b*c;
            y = b*d;
            break;
        }
        case '-':
        {
            x = a*d-b*c;
            y = b*d;
            break;
        }
        }
        if(x == 0)
            cout << 0 << endl;
        else if(y/yinshu(x,y) == 1)
            cout << x/yinshu(x,y) << endl;
        else
            cout << x/yinshu(x,y) << "/" << y/yinshu(x,y) << endl;
    }
    return 0;
}     

**113、


字符串替换

日子范围:3000
ms  |  内存限制:65535 KB

难度:2

描述
编一个程序实现将字符串中的有”you”替换成”we”

输入
输入包含多实施数据

每行数据是一个字符串,长度不超1000
数据以EOF结束

输出
于输入的各一样履行,输出替换后底字符串

样例输入
you are what you do

样例输出
we are what we do

来源
水题竞技

上传者
hzyqazasdf

#include "iostream"
#include "cstring"
#include "cstdio"
using namespace std;
int main(int argc, char const *argv[])
{
    char a[1001];

    while(gets(a)!=NULL)
    {
        int i,len=0;
        len=strlen(a);
        for(i=0; i<len; i++)
        {
            if(a[i]=='y'&&a[i+1]=='o'&&a[i+2]=='u')
            {
                cout<<"we";
                i+=2;
            }
            else cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}
   
#include<algorithm>//最优程序
#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s, s1, s2;
    while(getline(cin,s))
    {
        int flag;
        s1 = "you";
        s2 = "we";
        flag = s.find(s1,0);
        while(flag != string::npos)
        {
            s.replace(flag, 3, s2);
            flag = s.find(s1, flag + 1);
        }
        cout << s << endl;
    }
    return 0;
}    

**122、


Triangular Sums

时光限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
The nth* Triangular number, **T(n) = 1 + …
n, is the sum of the first n integers. It is the number of
points in a triangular array with 
n points on side. For
example 
T*(4)**:

X
X X
X X X
X X X X

Write a program to compute the weighted sum of triangular numbers:

W(n) = SUM[k = 1…n; k * T(k + 1)]

输入
The first line of input contains a single integer N, (1 ≤ N ≤ 1000)
which is the number of datasets that follow.

Each dataset consists of a single line of input containing a single
integer n, (1 ≤ n ≤300), which is the number of points on a side of the
triangle.

输出
For each dataset, output on a single line the dataset number (1 through
N), a blank, the value of n for the dataset, a blank, and the weighted
sum ,W(n), of triangular numbers for n.

样例输入
4
3
4
5
10

样例输出
1 3 45
2 4 105
3 5 210
4 10 2145

来源
Greater New York
2006

上传者
张云聪

#include<iostream>
using namespace std;
int main()
{
    int n,j=1;
    cin>>n;
    while(n--)
    {
        int a,sum=0;
        cin>>a;
        for(int i=1;i<=a;i++)
        sum+=(i*(i+1)*(i+2))/2;

        cout<<j++<<" "<<a<<" "<<sum<<endl;
    }
    return 0;
}
    
 
#include<iostream>//最优程序
using namespace std;
const int M=310;
int W[M];
int main()
{
    
    for(int i=1;i!=M;i++)
        W[i]=W[i-1]+i*(i+1)*(i+2)/2;
    int m,n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>m;
        cout<<i<<" "<<m<<" "<<W[m]<<endl;
    }
}                

**125、


盗梦空间

岁月限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
《盗梦空间》是平部可以的影视,在这部影片里,Cobb等人口足进入梦境中,梦境里的工夫会于实际中的光阴了得赶紧得多,这里而现实中的3秒钟,在梦里就是1时辰。

而,Cobb他们利用强效镇静剂,可以从第一交汇梦境进入第二重叠梦境,甚至上三叠,四层梦境,每层梦境都碰面生相同的岁月加速效果。那么现在于你Cobb在每层梦境中经历之时空,你会算是有具体世界过了多少长度期吗?

依据,Cobb先在第一交汇梦境待了1单时辰,又于次层梦境里用了1龙,之后,重临第一交汇梦境之后随即回去了现实。

这以切实世界里,其实过了396秒(6.6分钟)

输入
先是履输入一个整数T(0<=T<=100),表示测试数据的组数。
每组测试数据的首先执行是一个数字M(3<=M<=100)
随 后的M行每行的先河是一个字符串,该字符串假诺是”IN”
则Cobb向更深层的迷梦出发了,假设是字符串”OUT”则代表Cobb从深层的梦乡回了直达同重叠。假设是首字符串是”STAY”则表示Cobb在拖欠层梦境
中待了一段时间,本行随后将是一个整数S表示以该层停留了S秒钟(1<=S<=10000000)。数据保证在现实世界面临,时间过了整数
秒。

输出
对每组测试数据,输出现实世界过的时间(以秒为单位)。

样例输入
1
6
IN
STAY 60
IN
STAY 1440
OUT
OUT

样例输出
396

来源
通信兴趣小组选拨赛

上传者
admin

#include <iostream>
#include <string>
using namespace std;
int main() {
    int n, m;
    cin >> n;
    while (n--) {
        double jt = 0, min, tt = 1;
        cin >> m;
        while (m--) {
            string s;
            cin >> s;
            if (s == "IN") {
                tt *= 20;
                continue;
            }
            if (s == "OUT") {
                tt /= 20;
                continue;
            }
            cin >> min;
            jt += min / tt;
        }
        cout << jt * 60 << endl;
    }
    return 0;
}
  
#include<iostream>//最优程序
#include<string>
using namespace std;
int main()
{
    int m;
    string s;
    cin>>m;
    while(m--)
    {
        int p=1,n,t=0,tt;
        cin>>n;
        while(n--)
        {
            cin>>s;
            if(s=="STAY")
            {
                cin>>tt;
                t+=tt*60/p;
            }
            else if(s=="IN") p*=20;
            else p/=20;
        }
        cout<<t<<endl;
    }
}        

**168、


房布置

时间限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
2010
年香港世界博览会(Expo2010),是第41及世界博览会。于二零一零年七月1日届五月31日之间,在华长崎市举行。本次世博会也是由于中华开的
首交世界博览会。迪拜世博会以“城市,让在还美好”(Better City,Better
Life)为焦点,将尽量探索21世纪城市在。

这一次世博会总斥资高达450亿人民币,创造了世界博览会史上的极特别范围记录。吸引200个国和国际社团参展。估算有7000万人次的参观者。


了还好地接待在及时之间来自世界各地的参观者,怎样合理安排各商旅的住房问题提到了日程。组委会曾收到了大气底客户住宿定单,每张定单的情节包括要过夜的房
间数,起首住宿时间和假诺停的气数。为了方便整个城市各样店的田间管理,组委会希望对这么些定单实行布局,目标是用尽可能少的房来满意这多少个定单,以便空出更多之
房间用于安排流动乘客。

组委会请求DR.Kong来形成这职责,对这多少个定单举行合理安排,使得知足这么些定单要求的房间数最好少。

倘诺:某个定单上的游客如受部署到有室,在外约定住宿的次内是不转移房间的。为了简化描述,定单上的启住宿时呢去现在之第几龙。例如,定单为(10,30,5)表示游客要求下10只房间,第30上先河连休5龙。

输入
首先履:T 表示来T组测试数据
每组测试数据第一尽:N 代表必定单数
每组测试数据接受来有N行,每行有三独整数 A B C
表示房间数,起头住宿时及天数
1<=T<=100
1<=N<=10000 1<=A<=10 1<=B<=180 1<=c<=10

输出
出口一个平头,为满意所有定单要求的极其少房间数。

样例输入
1
3
3 10 4
4 9 3
3 12 6

样例输出
7

来源
其三交江苏省先后设计大赛

上传者
张云聪

#include <iostream>
using namespace std;

int main() {
    int n;
    cin>>n;
    while(n--){
        int m,a[200]={0},b,c,d;//计算出每天的最大人数,即房间数,保存
        cin>>m;
        while(m--){
            cin>>b>>c>>d;
            for(int i=c;i<c+d;i++)//是<,第c+d天不住的
                a[i]+=b;
        }
        int max=a[1];
        for(int i=2;i<181;i++)
            if(a[i]>max)
                max=a[i];
        cout<<max<<endl;
    }
    return 0;
}  
 
#include <stdio.h>//最优程序
#include <string.h>
#define MAX 200
int Scan(){
    int res=0 , ch;
    while(!((ch=getchar()) >= '0' && ch <= '9'))
        if(ch==EOF) return EOF;
        res=ch-'0';
        while((ch=getchar()) >= '0' && ch <= '9')
            res = res*10 + (ch-'0');
        return res;
}
int main()
{
    int Ncase,d[MAX];
    scanf("%d",&Ncase);
    while(Ncase--){
        memset(d,0,sizeof(d));
        int max = -1, n, a, b, c;
        n = Scan();
        while(n--){
            a = Scan();    b = Scan();    c = Scan();
            d[b] += a;
            d[b+c] -= a;
        }
        for (int i = 1 ; i < MAX ; i++){
            d[i] = d[i-1] + d[i];
            if (max < d[i]){
                max = d[i];
            }
        }
        printf("%d\n",max);
    }
    return 0;
}        

**169、


素数

光阴限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
走上前世博园某信息通信馆,参观者将获前所未有的高档互动体验,一集充满创想和喜之音通信互动体验秀将以全新式样突显,从观众踏入展馆的率先步于,就用同手执终端密不可分,人类以后幸之喜怒哀乐打参观者的掌上展开。


等候区的希望花园中,参观者便开首了他们奇妙的经验的同,等待着之旅游者可使用手机当极与互动小游戏,与梦想剧场内的杜撰人物Kr.
Kong 举行猜数比赛。当屏幕出现一个整数X时,若你可以相比较Kr.
Kong更快之有极其相仿其的素数答案,你拿相会得一个出人意料的红包。

诸如:当屏幕出现22不时,你的回应是23;当屏幕出现8时,你的答问应是7;若X本身是素数,则答应X;若太接近X的素数有少数单时,则应出乎它的素数。

 

输入
先是履行:N 要猜的平头个数
属下去有N行,每行有一个刚刚整数X
1<=N<=5 1<=X<=1000

输出
输出有N行,每行是对准应X的卓越相仿其的素数

样例输入
4
22
5
18
8

样例输出
23
5
19
7

来源
其三及青海省序设计大赛

上传者
张云聪

#include<stdio.h>
int main()
{
    int a[1010]= {1,1};
    int i,j;
    for(i=2; i<32; i++)
    {
        if(a[i]==0)
            for(j=i*i; j<1010; j+=i)
                a[j]=1;
    }
    int N;
    scanf("%d",&N);
    while(N--)
    {
        int n;
        scanf("%d",&n);
        for(i=n; a[i]==1; i--);
        for(j=n; a[j]==1; j++);
        if((j-n)<=(n-i))
            printf("%d\n",j);
        else
            printf("%d\n",i);
    }
} 
 
 
#include<iostream>//最优程序
#include<algorithm>
using namespace std;
int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,
191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,
419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,
653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,
919,929,937,941,947,953,967,971,977,983,991,997,1009};
    int main()
{
    int n,m;
    cin>>n;
    while(n--)
    {
        cin>>m;
        if(m==1) {cout<<2<<endl;continue;}
        int* l=lower_bound(prime,prime+169,m);
        if(*l-m<=m-*(l-1)) cout<<*l<<endl;
        else cout<<*(l-1)<<endl;
    }
}                

**198、


数数

时限定:3000
ms  |  内存限制:65535 KB

难度:2

描述
我们从来数数都是爱好从错误望左侧数的,不过咱的小白同学如今传闻德国人数及我们小不同,他们刚刚和我们倒,是自从左侧为左数的。由此当他见到123时会说“321”。

当今发同各样德国来的任课以克赖斯特彻奇学院拓展有关ACM的讲座。现在异聘请你来充当他的出手,他吃你有素材给你找到这一个资料在书中之页数。现在公既找到了相应之页码,要用英文把页码告诉他。

为简化大家的问题,你只是待回到单词的大写的首字母。(数字0念成字母O)

专注:每个数字式单独读取的,因而无汇合面世11念成double one的景观。

输入
输入分点儿部分:
率先有些:一个整数T(1<=T<=1000)
仲局部:一共T行,每行为一个数字。每个数之尺寸不越10个。

输出
每组输出单独占一实施,输出对应之回来给德意志讲解的页码缩写。

样例输入
2
12
1234

样例输出
TO
FTTO

来源
长春大学校赛题目

上传者
张云聪

#include<iostream>
#include<string>
using namespace std;
int main ( )
{
    int n;
    cin >> n;
    while ( n-- )
    {
        string s;
        cin>>s;
        for ( int i = s.size()-1; i >=0; i-- )
        {
            switch ( s[i] )
            {
                    case '0':
                    case '1':
                        cout << "O"; break;
                    case '2':
                    case '3':
                        cout << "T"; break;
                    case '4':
                    case '5':
                        cout << "F"; break;
                    case '6':
                    case '7':
                        cout << "S"; break;
                    case '8':
                        cout << "E"; break;
                    case '9':
                        cout << "N"; break;
            }
        }
        cout << endl;
    }
    //system ( "PAUSE" );
    return 0;
}   
 
#include<cstdio>//最优程序
char str[]="OOTTFFSSENT";
void show(int t)
{
    if(t){putchar(*(str+t%10));show(t/10);}
}
int main()
{
    int n,t;
        scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        show(n);puts("");
    }
}                 

**199、


无线网络覆盖

日限定:3000
ms  |  内存限制:65535 KB

难度:3

描述
俺们的乐乐同学对于网可到底得及是钟情,他发出一个计划,这固然是因而无线网覆盖格勒诺布尔大学。


在学校让了外一个会,因而他若打多的无线路由。现在他刚以配备有修大道的纱,而该校无非同意将他的无线路由器放在路的刚巧中间。我们默认这长长的大道是笔
直的还要其当另外地方的增幅都平等。并且有所的路由器的覆盖面积是一模一样的。现在乐乐总结起当下长达通道的长及红火,以及路由器的埋半径,想请您拉,帮他盘算
出他起码要购买的路由器的数。

注意:为了防某种搅扰,两令无路由内的最为小离不可知小于1米C语言 1

希冀1遭呢同样久矩形的征途,中间的虚线代表中线。图2啊极其小幂的示意图。

 

输入
输入包括多组测试数据
先是组成部分:一个整数T(1<=T<=500)
仲有的:一共T行,每行包括四个整数L,D,R代表路的丰硕,宽和掩盖半径(米)。
(1<=L<=100000),(1<=D<=50),(1<=R<=200)。

输出
对此每组测试数据输出各占一进行,只暴发一个平头,表示极度少之路由器数量。如若无克挂,请输出impossible

样例输入
2
40 6 5
40 10 5

样例输出
5
impossible

来源
阿伯丁大学校赛题目

上传者
张云聪

/*
 * http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=199
 * by jtahstu on 2015/2/11 16:00
 */
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int r, d, l, n;
    cin >> n;
    while (n--) {
        cin >> l >> d >> r;
        if (4 * r * r - d * d < 1) {
            cout << "impossible" << endl;
        } else {
            double a = sqrt((2 * r) * (2 * r) * 1.0 - (d * d));
            if ((int) (l / a) == l / a)
                cout << (int) (l / a) << endl;
            else
                cout << (int) (l / a) + 1 << endl;
        }
    }
    return 0;
} 
 
#include<stdio.h>//最优程序
#include<math.h>
int main(){int T;double L,D,R,a;
scanf("%d",&T);while(T--)
{scanf("%lf%lf%lf",&L,&D,&R);
a=4*R*R-D*D;if(a>0)printf("%.0lf\n",ceil(L/sqrt(a)));
else puts("impossible");}}        

**204、


Coin Test

时限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
As is known to all,if you throw a coin up and let it droped on the desk
there are usually three results. Yes,just believe what I say ~it can be
the right side or the other side or standing on the desk, If you don’t
believe this,just try In the past there were some famous mathematicians
working on this .They repeat the throwing job once again. But jacmy is a
lazy boy.He is busy with dating or playing games.He have no time to
throw a single coin for 100000 times. Here comes his idea,He just go
bank and exchange thousands of dollars into coins and then throw then on
the desk only once. The only job left for him is to count the number of
coins with three conditions.

He will show you the coins on the desk to you one by one. Please tell
him the possiblility of the coin on the right side as a fractional
number if the possiblity between the result and 0.5 is no larger than
0.003. BE CAREFUL that even 1/2,50/100,33/66 are equal only 1/2 is
accepted ! if the difference between the result and 0.5 is larger than
0.003,Please tell him “Fail”.Or if you see one coin standing on the
desk,just say “Bingo” any way.

输入
Three will be two line as input.
The first line is a number N(1<N<65536)
telling you the number of coins on the desk.
The second line is the result with N litters.The letter are “U”,”D”,or
“S”,”U” means the coin is on the right side. “D” means the coin is on
the other side .”S” means standing on the desk.

输出
If test successeded,just output the possibility of the coin on the right
side.If the test failed please output “Fail”,If there is one or
more”S”,please output “Bingo”

样例输入
6
UUUDDD

样例输出
1/2

来源
阿里格尔大高校赛题目

上传者
张云聪

#include<stdio.h>
int divisor( int n, int m )
{
    if( n % m == 0 )
        return m;
    else
        divisor( m, n % m );
}
int main( )
{
    int n, n1 = 0, n2 = 0, m1, m2;
    char ch[65537];
    bool stand = false;
    scanf("%d", &n );
    scanf("%s", ch );
    for( int i = 0 ; i < n ; i++ )
    {
        if( ch[i] == 'U' )
            n1++;
        else if( ch[i] == 'D' )
            n2++;
        else if( ch[i] == 'S' )
            stand = true;
    }
    if( stand )
        printf("Bingo\n");
    else if( (1.0*n1/n) > (0.5+0.003) || (1.0*n1/n) < (0.5-0.003) )
        printf("Fail\n");
    else
        printf("%d/%d\n", n1/divisor( n, n1 ), n/divisor( n, n1 ) );
    return 0;
}
      
#include<cstdio>//最优程序
int u,d;
int gcd(int a,int b)
{
    if(a==0) return b;
    else return gcd(b%a,a);
}
int main()
{
    int n;
    char c;
    scanf("%d",&n);
    getchar();
    for(int i=0;i!=n;i++)
    {
        c=getchar();
        if(c=='S') {puts("Bingo");return 0;}
        if(c == 'U') ++u;
        else ++d;
    }
    int g=gcd(u,u+d);
    if((double)u/(u+d)-0.5>0.003 ||(double)u/(u+d)-0.5<-0.003) puts("Fail");
    else printf("%d/%d",u/g,(u+d)/g);
}        

**206、


矩形的个数

岁月限制:1000
ms  |  内存限制:65535 KB

难度:1

描述
在一个3*2底矩形中,可以寻找到6单1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1之矩形和1独3*2的矩形,总共18个矩形。

为出A,B,总计好从中找到小只矩形。

输入
核心有差不多组输入数据(<10000),你不可能不处理到EOF结束

输入2个整数A,B(1<=A,B<=1000)

输出
出口找到的矩形数。

样例输入
1 2
3 2

样例输出
3
18

来源
FOJ月赛-2007年3月

上传者
ACM_赵铭浩

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        printf("%.0lf\n",(double)a*(a+1)*b*(b+1)/4);
    }
    return 0;
}   
 
#include <stdio.h>//最优程序
main(){float a,b;while(scanf("%f%f",&a,&b)+1)printf("%.0f\n",(a+1)*a*(b+1)*b/4);}        

**216、


A problem is easy

时光限定:1000
ms  |  内存限制:65535 KB

难度:3

描述
When
Teddy was a child , he was always thinking about some simple math
problems ,such as “What it’s 1 cup of water plus 1 pile of dough ..” ,
“100 yuan buy 100 pig” .etc..

C语言 2

One day Teddy met a old man in his dream , in that dream the man whose
name was“RuLai” gave Teddy a problem :

Given an N , can you calculate how many ways to write N as i * j + i +
j (0 < i <= j) ?

Teddy found the answer when N was less than 10…but if N get bigger , he
found it was too difficult for him to solve.
Well , you clever ACMers ,could you help little Teddy to solve this
problem and let him have a good dream ?

输入
The first line contain a T(T <= 2000) . followed by T lines ,each
line contain an integer N (0<=N <= 10^11).

输出
For each case, output the number of ways in one line

样例输入
2
1
3

样例输出
0
1

上传者
苗栋栋

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int a,count=0;
        cin>>a;
        for(int i=1; (i+1)*(i+1)<=(a+1); i++)

            if((a+1)%(i+1)==0)
                count++;

        cout<<count<<endl;
    }
    return 0;
}
 
#include<cstring>
#include<cstdio>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
#include<iostream>
#include<cmath>
using namespace std;
#define CLR(arr,val) memset(arr,val,sizeof(arr))

int main()
{
    int t,n,cnt=0;
    //long long num;
    int num;
    scanf("%d",&t);
    while(t--)
    {
    //    scanf("%lld",&num);
        scanf("%d",&num);
        int nn=(int)(sqrt(num+1.0)+0.5);
        num++;
        cnt=0;
        for(int i=2;i<=nn;i++)
            if(num%i==0) cnt++;
        printf("%d\n",cnt);
    }
    
}    

**217、


a letter and a number

时刻范围:3000
ms  |  内存限制:65535 KB

难度:1

描述
we
define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, … f(Z) = 26, f(z) =
-26;
Give you a letter x and a number y , you should output the result of
y+f(x).

输入
On the first line, contains a number T(0<T<=10000).then T lines
follow, each line is a case.each case contains a letter x and a number
y(0<=y<1000).

输出
for each case, you should the result of y+f(x) on a line

样例输入
6
R 1
P 2
G 3
r 1
p 2
g 3

样例输出
19
18
10
-17
-14
-4

上传者
苗栋栋

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int n;
    //freopen("input.txt","r",stdin);
    scanf("%d",&n);
    while(n--)
    {
        char a;
        int b,c,d;
        char ch=getchar();
        scanf("%c%d",&a,&b);
        c=a;
        if(a>='A'&&a<='Z')
        d=c-64;
        if(a>='a'&&a<='z')
        d=96-c;
        printf("%d\n",b+d);
    }
    return 0;
}     
 
#include<stdio.h>//最优程序
main()
{
    int x,n;
    scanf("%d",&x);
    while(x--)
    {
        getchar();
        char c;
        scanf("%c %d",&c,&n);
        if(c>=65&&c<=90) c=c-64;
        else c=0-(c-96);
        n=c+n;
        printf("%d\n",n);
        

    }
}           

**241、


字母总计

岁月限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
前些天受您一个由小写字母组成字符串,要你找有字符串中出现次数最多之字母,固然出现次数最多字母有差不四只那么输出最小之特别。

输入
先是尽输入一个正整数T(0<T<25)
随着T行输入一个字符串s,s长度小于1010。

输出
每组数据输出占一执行,输出出现次数最多之字符;

样例输入
3
abcd
bbaa
jsdhfjkshdfjksahdfjkhsajkf

样例输出
a
a
j

来源
[路过这]原创

上传者
路过这

#include <stdio.h>
#include "string.h"
#include <iostream>
using namespace std;
int main(int argc, char const *argv[])
{
    int n,i,len;
    char a[1011];
    cin>>n;
    getchar();
    while(n--)
    {
        char b[1011]={0};
        int fla=0,max=0;
        cin>>a;
        len=strlen(a);
        for(i=0; i<len; i++)
        {

            b[a[i]-'a']++;
        }
        max=b[0];
        for(i=0; i<26; i++)
        {
            if(b[i]>max)//||(b[i]==max&&a[i]-'a'<a[fla]-'a')
            {
                max=b[i];
                fla=i;
            }
        }
        cout<<(char)(fla+'a')<<endl;
    }
    return 0;
}
   
#include<stdio.h>//最优程序
#include<string.h>
main()
{
    int x,i,max,q;
    char a[1011];
    scanf("%d",&x);
    getchar();
    while(x--)
    {
        int s[26]={0};
        gets(a);
        for(i=strlen(a)-1;i>=0;i--)
            s[a[i]-97]++;
        max=0;
        for(i=0;i<26;i++)
            if(max<s[i]) max=s[i],q=i;
        printf("%c\n",q+97);
    }
    
}              

**242、


测算球体积

时刻限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
基于输入的半径值,总括球的体积。

输入
输入数据来差不多组,每组占一执行,每行包括一个实数,表示球的半径。(0<R<100)

输出
出口对应之球体的体积,对于每组输入数据,输出一行,总结结果四扬弃五称乎整数
Hint:PI=3.1415926

样例输入
1
1.5

样例输出
4
14

来源
Trinity

上传者
张洁烽

#include<stdio.h>
int main()
{
    double n,pi=3.1415926;
    while(scanf("%lf",&n)==1)
    {
        printf("%.0lf\n",4*pi*n*n*n/3);
    }
    return 0;
}

**243、


互换输出

时刻限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
输入n(n<100)个数,找有中最为小之屡屡,将它们和最前的累累交流后输出那个往往。(如若那第一个数就是最为小的累,则维持原样输出,假使尽小的数起一样之此前边的置换)

输入
输入数据爆发差不多组,每组占一进行,每行的发端是一个平头n,表示是测试实例的数值的个数,跟着就是n个整数。n=0表示输入的利落,不举行拍卖。

输出
对于每组输入数据,输出互换后底数列,每组输出占一行。

样例输入
4 2 1 3 4
5 5 4 3 2 1
0

样例输出
1 2 3 4
1 4 3 2 5

来源
[张洁烽]原创

上传者
张洁烽

#include<stdio.h>
#include<iostream>
using namespace std;
int main() {
    int n, i, a[100], t, j;
    while (cin >> n && n) {
        j = 0;
        for (i = 0; i < n; i++)
            cin >> a[i];
        t = a[0];
        for (i = 0; i < n; i++) {
            if (a[0] > a[i]) {
                a[0] = a[i];
                j = i;
            }
        }
        a[j] = t;
        for (i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
    return 0;
}
 
 
#include<iostream>//最优程序
#include<iterator>
#include<algorithm>
using namespace std;
int data[110];
int main()
{
int n;
    while(cin>>n && n)
    {
        for(int i=0;i!=n;i++) cin>>data[i];
        iter_swap(data,min_element(data,data+n));
        copy(data,data+n,ostream_iterator<int>(cout," "));
        cout<<endl;
    }
}                        

**244、


16进制的简约运算

日范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
现深受您一个16进制的加减法的表明式,要求用8迈入制输出表明式的结果。

输入
率先行输入一个正整数T(0<T<100000)
通下去有T行,每行输入一个字符串s(长度小于15)字符串中来三三两两独数及一个加号或者一个减号,且表明式合法并且有所运算的累累还低于31各

输出
每个表达式输出占一行,输出表明式8进制的结果。

样例输入
3
29+4823
18be+6784
4ae1-3d6c

样例输出
44114
100102
6565

来源
[路过这]原创

上传者
路过这

#include"stdio.h"
int main() {
    int n, a, b;
    while (scanf("%d", &n) != EOF) {
        while (n--) {
            scanf("%x %x", &a, &b);
            printf("%o\n", a + b);
        }
    }
    return 0;
}
 
#include<stdio.h>//最优程序
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int a,b,d;
        char c;
        scanf("%x%c%x",&a,&c,&b);
        if(c=='+') d=a+b;
        else d=a-b;
        if(d>=0)
            printf("%o\n",d);
        else printf("-%o\n",-d);
    }
}       

**255、


C小加 之 随机数

日子限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
ACM
队之“C小加”同学想在学校受到呼吁部分同班一道做一样码问卷调查,为了试验的客观性,他事先用统计机生成了N个1顶1000以内的轻易整数
(0<N≤100),对于中还的数字,只保留一个,把其他一律之再三去丢,不同的多次对承诺着不同之学习者的学号。然后再一次将这一个往往从小到大排序,遵照排
好之一一去摸同学做调查。请您拉 C小加 完成“去重新”与“排序”的行事。

输入
先是执输入整数T(1<T<10)表示有点组测试数据,
每组测试数据包括2行,
第1行事1单刚整数,表示所杀成的随意数之个数:N(0<N≤100)
第2履有N个用空格隔开的正整数,为所来的随机数。
(随机数为问题加的,不需要ACMer生成)

输出
输出为是2行,第1行事1个正整数M,表示未一致之随意数的个数。
第2作为M个用空格隔开的正整数,为于小至大排好序的无相同的随机数。

样例输入
1
10
20 40 32 67 40 20 89 300 400 15

样例输出
8
15 20 32 40 67 89 300 400

来源
RQNOJ

上传者
唐博

#include<iostream>
#include<algorithm>
using namespace std;
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        int m,i,a[110],count;
        count=0;
        cin>>m;
        for(i=0; i<m; i++)
            cin>>a[i];
        sort(a,a+m);
        for(i=0; i<m; i++)
        {
            if(a[i]!=a[i+1]) count++;
            else if(a[i]==a[i+1]) a[i]=-1;
        }
        cout<<count<<endl;
        for(i=0; i<m; i++)
        {
            if(a[i]!=-1) cout<<a[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
  
#include<iostream>//最优程序
#include<map>
#include<cstdio>
#include<algorithm>
#include<iterator>
using namespace std;
const int maxn=110;
int tab[maxn];
int main()
{
     
    int t;cin>>t;
    while(t--){
        int n;cin>>n;
        for(int i=0;i<n;i++)scanf("%d",&tab[i]);
        sort(tab,tab+n);
        cout<<(n=distance(tab,unique(tab,tab+n)))<<endl;
        copy(tab,tab+n,ostream_iterator<int>(cout," "));cout<<endl;
    }
    
}              

**259、


郁郁葱葱的首先征收

岁月限定:3000
ms  |  内存限制:65535 KB

难度:0

描述
葱郁二零一九年就六年级了,小叔为她报了一个念程序设计的班。

首先节约课上,老师说的就是是哪些输入一个勤,再原样输出出来。

因今日之公看来,挺容易的凡匪?
这就是说,就请而吗刻画起一个相同的次吧

输入
首先执行是一个整数N(N<10)表示测试数据的组数)
紧接下的n行 每行唯有一个频繁(可能是小数,也说不定是整数)
夫数之位数(整数员数+小数位数)不越19位

输出
面相输出每个数,每输出占一行

样例输入
2
3.5
5

样例输出
3.5
5

来源
二零零六年小学生程序设计友谊赛试题

上传者
ACM_赵铭浩

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    char a[20];
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",a);
        printf("%s\n",a);
    }
    return 0;
}        

**260、


数数粗木块

日子范围:3000 ms  |  内存限制:65535 KB

难度:1

描述
以墙角堆放着一样积聚完全相同的正方体小木块,如下图所示:

C语言 3

 

 因为木块堆得实际是最为来规律了,你若知道其的层数就可测算有所木块的数码了。

现呼吁而写单程序 给您随便一积聚木块的层数,求来这堆木块的数量.

输入
第一履是一个整数N(N<=10)表示测试数据的组数)
通下的n行 每行只有一个整数 ,表示即堆小木块的层数,

输出
对诺每个输入的层数有一个输出,表示这堆小木块的毕竟数据,每个输出占一行

样例输入
215

样例输出
135

来源
二〇〇八年小学生程序设计友谊赛试题

上传者
ACM_赵铭浩

#include "iostream"
using namespace std;
int main()
{
    int n,i,a,b[10001],sum;
    cin>>n;
     b[0]=0;
     for(i=1;i<=10001;i++)
        {b[i]=b[i-1]+i;}
    while(n--)
    {
        sum=0;
        cin>>a;
            for(i=1;i<=a;i++)
              {sum+=b[i];}
        cout<<sum<<endl;
    }
    return 0;
}  
 
#include <stdio.h>//最优程序
int main()
{
    int n,t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        printf("%d\n",n*(n+1)*(n+2)/6);
    }
}        

**263、


精 挑 细 选

时刻限制:3000 ms  |  内存限制:65535 KB

难度:1

描述
小王是公司之库管理员,一天,他接到了这般一个任务:从仓库中搜索有同样到底钢管。这任起不算什么,可是及时穷钢管的要求可真是给他难了,要求如下:
1、 那穷钢管一定即使堆栈着最为丰盛的;
2、 这穷钢管一定假如是无限充裕之钢管被卓殊密切的;
3、
这根钢管一定假诺称前少久的钢管被编码最要命之(每根钢管都出一个互不相同的编码,越怪表示生产日期越近)。
相关的资料及是生,然则,手工从几百份钢管材料被选出符合要求的这根……
要不,如故请而编个程序来提携他解决是题材吧。

输入
先是行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据的首先行
有一个整数m(m<=1000),表示仓库着享有钢管的多少,
事后m行,每行三只整数,分别代表一致干净钢管的尺寸(以分米为单位)、直径(以毫米为单位)和编码(一个9个整数)。

输出
本着许每组测试数据的出口只生一个9各种整数,表示选出的这根钢管的编码,
每个输出占一行

样例输入
222000 30 1234567892000 20 98765432143000 50 8721984423000 45 7524981242000 60 7651287423000 45 652278122

样例输出
987654321752498124

来源
二〇〇八年小学生程序设计友谊赛试题

上传者
ACM_赵铭浩

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int m,a,b,c,a1,b1,c1;
        scanf("%d",&m);
        scanf("%d%d%d",&a,&b,&c);
        for(int i=1; i<m; i++)
        {
            scanf("%d%d%d",&a1,&b1,&c1);
            if(a1>a||(a1==a&&b1<b)||(a1==a&&b1==b&&c1>c))
                a=a1,b=b1,c=c1;
        }
        printf("%d\n",c);
    }
    return 0;
}      
 
#include<stdio.h>//最优程序
int main()
{
    int n,m,i,a,b,c,x,y,z;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&m);
        a=0;b=0;c=0;
        for(i=0;i<m;i++)
        {
            scanf("%d%d%d",&x,&y,&z);
            if(x>a||x==a&&y<b||x==a&&y==b&&z>c) { a=x;b=y;c=z; }
        }
        printf("%d\n",c);
    }
    return 0;
}        

**264、


王者的魔镜

时刻范围:3000 ms  |  内存限制:65535 KB

难度:1

描述
天子有一个魔镜,可以将此外触及镜面的事物变为原来的有数加倍——只是,因为是眼镜嘛,扩大的那么部分凡是倒转的。

依同条项链,我们就此AB来表示,不同之假名代表不同颜色之珠子。倘若把B端接触镜面的话,魔镜会将当下漫漫项链变为ABBA。假诺重用同样端接触的说话,则会化为ABBAABBA(假定天子只所以项链的某某一样端接触魔镜)。

加以最终的项链,请编写程序输出国君没动用魔镜从前,最初的项链可能的然则小尺寸。

输入
率先执行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一执
只出一个字符串(长度小于100),由大写英文字母组成,表示最后之项链。

输出
每组测试数据的出口只出一个平头,表示始祖没利用魔镜前,最初的项链可能的特出小尺寸。

样例输入
2ABBAABBAA

样例输出
21

来源
二〇〇八年小学生程序设计友谊赛试题

上传者
ACM_赵铭浩

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
    int temp,k,i;
    char s[100];
    scanf("%d",&temp);
    getchar();
    while(temp--)
    {
        gets(s);
        k=strlen(s);
        while(k)
        {
            for(i=0; i<k; ++i)
                if(s[i]!=s[k-1-i]||k==1||k%2)
                {
                    cout<<k<<endl;
                    k=0;
                }
            k=k/2;
        }
    }
}
   
#include<stdio.h>//最优程序
#include<string.h>
main()
{
    int z,x,q,i;
    char a[101],t[51];
    scanf("%d",&z);
    getchar();
    while(z--)
    {
        gets(a);
        do
        {
            x=strlen(a);
            if(x%2) break;
            for(i=0;i<x/2;i++)
                t[i]=a[x-1-i];
            t[i]='\0';
            a[x/2]='\0';
            q=strcmp(a,t);
        }while(q==0);
        printf("%d\n",x);
    }
}        

**266、


字符串逆序输出

时范围:3000
ms  |  内存限制:65535 KB

难度:0

描述
于一定一行字符,逆序输出此行(空格.数字不出口)

输入
首先执是一个整数N(N<10)表示测试数据的组数)
每组测试数据占一举行,每行数据中暴发且只生一个空格(这样你得管此行当成多少个字符串读取)。
每行字符长度不领先40
与此同时保证输入的字符唯有空格(1单),数字,小写字母两种

输出
针对许每行测试数据,逆序输出(空格和数字不出口)

样例输入
3
abc 123de
abc 123
abc d

样例输出
edcba
cba
dcba

来源
[521521]原创

上传者
ACM_赵铭浩

#include <stdio.h>
#include <string.h>
int main(void)
{
    int n,k,i;
    char a[100];
    //freopen("input.txt", "r", stdin);
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        gets(a);
        k=strlen(a);
        for(i=k-1; i>=0; i--)
            if(a[i]>='a'&&a[i]<='z')
                printf("%c",a[i]);
        printf("\n");
    }
    return 0;
}
     
#include <stdio.h>
void revers()
{
    char c;
    if((c = getchar()) != '\n')
        revers();
    if(c != '\n'&&c>='a'&&c<='z')
        putchar(c);
}

int main()
{
    int a;
    scanf("%d\n",&a);
    while(a--)
    {
        revers();
        printf("\n");
    }
    return 0;
}            

**268、


荷兰王国国旗问题

时间限制:3000 ms  |  内存限制:65535 KB

难度:1

描述
 

荷兰王国国旗有三横条片组成,自上到下的老三长长的块颜色依次为吉祥、白、蓝。现有若干由于红、白、蓝几种植颜色之段类别,要拿其重新排列使拥有同一颜色之区块在一道。本问题要求以有青色的条块放最左边、所有白色之条块放中间、所有灰色的条块放最右侧。

输入
第1实施是一个正整数n(n<100),表示出n组测试数据。接下来起n行,每行有几两只由R,W,B二种字符构成的字符串系列,其中R,W和B分别表示红、白、蓝二种植颜色之章,每行最多起1000独字符。

输出
本着输入被每行上由R,W,B两种植字符构成的字符串连串,将它们重新排列使拥有同一颜色之节在合,满足前述要求。

样例输入
3BBRRWBWRRRRRRWWRWRBRBRW

样例输出
RRRRRWWBBBRRRRRWWWBRRWB

来源
acm教材

上传者
李文鑫

#include "iostream"
#include "cstdio"
#include "cstring"
using namespace std;
int main(int argc, char const *argv[])
{
    int n,i;
    char a[1001];
    cin>>n;
    getchar();
    while(n--)
    {
        int x=0,y=0,z=0,m=0;
        //把getchar();放这里了,我去
        gets(a);
        m=strlen(a);
        for(i=0;i<m;i++)
        {
            if(a[i]=='R')x++;
            if(a[i]=='W')y++;
            if(a[i]=='B')z++;
        }
        for (i=0;i<x;i++)
        cout<<'R';
        for(i=0;i<y;i++)
            cout<<'W';
        for(i=0;i<z;i++)
            cout<<'B';
        cout<<endl;
    }
    return 0;
}
   
#include<stdio.h>//最优程序
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        int w=0,b=0;
        char c;
        while((c=getchar())!=10)
            c=='R'?printf("R"):(c=='W'?w++:b++);
        while(w--)
            putchar('W');
        while(b--)
            putchar('B');
        printf("\n");
    }
}            

**273、


字母小打

岁月限定:1000
ms  |  内存限制:65535 KB

难度:0

描述
于您一个乱序的字符串,里面含有有小写字母(a–z)以及有特殊符号,请您摸来所吃字符串里面有的小写字母的个数,
拿那些数对准26取余,输出取余后的数字在子母表中对应之小写字母(0对应z,1针对性应a,2针对许b….25对应y)。

输入
先是执是一个整数n(1<n<1000)表示接下去有n行的字符串m(1<m<200)需要输入

输出
出口对应之小写字母 每个小写字母单独占一行

样例输入
2
asdasl+%$^&ksdhkjhjksd
adklf&(%^(alkha

样例输出
q
j

来源
[zinber]原创

上传者
zinber

#include "stdio.h"
#include "string.h"
int main(int argc, char const *argv[])
{
    int n;
    char a;
    //freopen("input.txt","r",stdin);
    scanf("%d",&n);
    getchar();
    while(n--)
    {
       int number=0;  
       while(scanf("%c",&a),a!='\n')
        {
            if (a>='a'&&a<='z')
                number++;
        }
        if (number%26==0)
            printf("z\n");
        else
            printf("%c\n",'a'+number%26-1);
    }
    return 0;
}  
 
#include <cstdio>//最优程序
#include <cctype>
#include <cstring>
int main(){
    int n,i;
    char arr[201];
    scanf("%d",&n);
    while(n--){
        scanf("%s",arr);
        int l=strlen(arr),r=0;
        for(int i=0;i!=l;i++)
            if(islower(arr[i]))
                r++;
        r%=26;
        printf("%c\n",r==0?'z':96+r);
    }
}            

**274、


正巧三角形的外接圆面积

岁月限定:1000
ms  |  内存限制:65535 KB

难度:0

描述
被您碰巧三角形的边长,pi=3.1415926 ,求正三角形的外接圆面积。

输入
只是出同一组测试数据
第一实施输入一个整数n(1<n<1000)表示接下要输入n个边长m(1.0<=m<1000.0)

输出
输出每个正三角形的外接圆面积,保留少数各个小数,每个面积单独占一行。

样例输入
5
1
13
22
62
155

样例输出
1.05
176.98
506.84
4025.43
25158.92

来源
[zinber]原创

上传者
zinber

#include<stdio.h>
#define pi 3.1415926
int main()
{
    double a,s=0;
    int n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%lf",&a);
        s=a*a*pi/3;
        printf("%.2lf\n",s);
    }
    return 0;
}
   
#include<stdio.h>//最优程序
int main()
{
   int n;
   double m,pi=3.1415926;
   scanf("%d",&n);
   while(n--)
   {
   scanf("%lf",&m);
   printf("%.2lf\n",pi*m*m/3);
    }
return 0;
}        

**275、


队花的不快一

日限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
ACM队之队花C小+日常抱怨:“C语言中的格式输出中生出十六、十、八上制输出,可是也未曾二进制输出,哎,真遗憾!什么人可以支援我写一个程序实现输入一个十前行制数n,输出它的第二上前制数呀?”

莫非你莫思扶拉其吧?^_^

输入
输入有多独数据,数据以EOF结束;每个数据ni(0<=ni<=1000010000)用空格隔开;
(温馨提醒:EOF即凡是一个文件之毕标志;while(scanf(“%d”,&n)!=EOF){})

输出
输出有多尽,每行对应一个十上前制数ni的老二前进制数;
专注:输出的亚上制去丢任何一个盈余的0;

样例输入
0 1 2 10

样例输出
0
1
10
1010

来源
原创

上传者
Never

#include "iostream"//十进制转换成二进制
using namespace std;
void dec_bin(const int x)
{
    if (x/2>0)
    {
        dec_bin(x/2);
        cout<<x%2;
    }
    else cout<<x;
}
int main(int argc, char const *argv[])
{
    int data=0;
    while(cin>>data)
    {
        dec_bin(data);
        cout<<endl;
    }
    return 0;
}

**276、


相比字母大小

时限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
随便给闹点儿个英文字母,相比它们的高低,规定26单英文字母A,B,C…..Z依次从大至多少。

输入
首先执输入T,表示来T组数据;
连接下去有T行,每行有一定量只字母,以空格隔开;

输出
出口各组数据的相比较结实,输出格式见样例输出;
(注意输出严峻依据输入的逐条即输入是A B,输出时得是A?B)

样例输入
3
A B
D D
Z C

样例输出
A>B
D=D
Z

来源
原创

上传者
Never

#include<stdio.h>
int main() {
    int i;
    char a, b;
    scanf("%d", &i);
    while (i--) {
        getchar();
        scanf("%c %c", &a, &b);
        if (a > b)
            printf("%c<%c\n", a, b);
        else if (a == b)
            printf("%c=%c\n", a, b);
        else if (a < b)
            printf("%c>%c\n", a, b);
    }
    return 0;
}

**277、


车牌号

日限定:3000
ms  |  内存限制:65535 KB

难度:1

描述
郁郁葱葱很喜欢钻研车牌号码,从车牌号码上得以看到号码注册之必定,据研究发现,车牌号码是依字典序发放的,现在其收集了广大车牌号码,请你计划程序救助她判注册于早的编号。车牌号码由5个假名或数字构成

输入
先是行是n,代表有n组数据,第二行是m,以下m行是m个车牌号码
其中n<100,m<1000

输出
输出注册于早的车牌号

样例输入
1
4
AA100
aa100
0o2r4
ye2er

样例输出
0o2r4

来源
[侯飒飒]原创

上传者
侯飒飒

#include "iostream"
#include "string.h"
#include "cstdio"
using namespace std;
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        int m,i;
        char a[6]="zzzzz",str[6];
        cin>>m;
        getchar();
        for(i=0; i<m; i++)
        {
            scanf("%s",str);
            if(strcmp(a,str)>0)
                strcpy(a,str);
        }
        printf("%s\n",a);
    }
    return 0;
} 
 
#include<stdio.h>//最优程序
#include<string.h>
main(){int n;scanf("%d",&n);while(n--)
{int m;char a[6],c[6];scanf("%d",&m);getchar();gets(c);
while(--m){gets(a);if(strcmp(a,c)<0)strcpy(c,a);}puts(c);}}        

**283、


本着如排序

光阴限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
In your job at Albatross Circus Management (yes, it’s run by a bunch of
clowns), you have just finished writing a program whose output is a list
of names in nondescending order by length (so that each name is at least
as long as the one preceding it). However, your boss does not like the
way the output looks, and instead wants the output to appear more
symmetric, with the shorter strings at the top and bottom and the longer
strings in the middle. His rule is that each pair of names belongs on
opposite ends of the list, and the first name in the pair is always in
the top part of the list. In the first example set below, Bo and Pat are
the first pair, Jean and Kevin the second pair, etc.

输入
The input consists of one or more sets of strings, followed by a final
line containing only the value 0. Each set starts with a line containing
an integer, n, which is the number of strings in the set, followed by n
strings, one per line, NOT SORTED. None of the strings contain spaces.
There is at least one and no more than 15 strings per set. Each string
is at most 25 characters long.

输出
For each input set print “SET n” on a line, where n starts at 1,
followed by the output set as shown in the sample output.
If length of two strings is equal,arrange them as the original
order.(HINT: StableSort recommanded)

样例输入
7
Bo
Pat
Jean
Kevin
Claude
William
Marybeth
6
Jim
Ben
Zoe
Joey
Frederick
Annabelle
5
John
Bill
Fran
Stan
Cece
0

样例输出
SET 1
Bo
Jean
Claude
Marybeth
William
Kevin
Pat
SET 2
Jim
Zoe
Frederick
Annabelle
Joey
Ben
SET 3
John
Fran
Cece
Stan
Bill

来源
POJ

上传者
sadsad

#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(string a, string b) {
 return a.size() < b.size();
 }
int main()
{
    int n;
    int count=0;
    string a[10001];
    while(cin>>n)
    {
        if(n==0)break;

            for(int i=0;i<n;i++)
            {
                cin>>a[i];
            }
            sort(a,a+n,cmp);//sort
            cout<<"SET "<<++count<<endl;
        for(int i=0;i<n;i+=2)
            cout<<a[i]<<endl;
        if(n%2==0)
        {
            for(int i=n-1;i>0;i-=2)
                cout<<a[i]<<endl;
        }
        else for(int i=n-2;i>0;i-=2)
            cout<<a[i]<<endl;
    }

    return 0;
}
  
#include<stdio.h>//最优程序
#include<string.h>
main()
{
    int x,i,j,q=0;
    char s[16][26],t[26],z[16][26];
    while(1)
    {
        scanf("%d",&x);
        if(x==0) break;
        q++;
        getchar();
        for(i=0;i<x;i++)
            gets(s[i]);
        for(i=1;i<x;i++)
            for(j=0;j<x-i;j++)
                if(strlen(s[j])>strlen(s[j+1])) 
                {strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}
        for(i=0,j=0;i<x;i++,j++)
        {    strcpy(z[j],s[i]);
            if(i!=x-1) strcpy(z[x-j-1],s[++i]);
        }
        printf("SET %d\n",q);
        for(i=0;i<x;i++)
            puts(z[i]);
    }
}        

**324、


猴子吃桃问题

时刻限定:3000
ms  |  内存限制:65535 KB

难度:0

描述
发出雷同堆放桃子不知多少,猴子第一龙吃少一半,又多吃了一个,第二天仍这多少个方法,吃少多余桃子的一半并且多一个,每天这么,到第m天上午,猴子发现独残留一只桃子了,问即堆桃子原来有几个?
(m<29)

输入
先是推行有一个平头n,表示来n组测试数据(从第二执行起头,每一行的多寡吧:第m龙);

输出
各国一行数是桃子的终究个数

样例输入
2
3
11

样例输出
22
6142

来源
网络

上传者
首席营业官

#include "stdio.h"
int f(int m)
{
    if(m==0) return 1;
    else return 2*(f(m-1)+1);
}
int main()
{
    int n,m;
    //freopen("input.txt","r",stdin);
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&m);
        printf("%d\n",f(m));
    }
    return 0;
}
  
#include<stdio.h>//最优程序
int main()
{
    int n,m;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&m);
        printf("%d\n",(3<<m)-2);
    }
    return 0;
}        

**399、


整除个数

时限制:3000
ms  |  内存限制:65535 KB

难度:1

描述
1、2、3… …n这n(0<n<=1000000000)个数中生些许个数可以让刚刚整数b整除。

输入
输入包含多组数
每组数据占一履行,每行给有个别单刚刚整数n、b。

输出
输出每组数据对应的结果。

样例输入
2 1
5 3
10 4

样例输出
2
1
2

来源
自编

上传者
mix_math

#include<stdio.h>
int main()
{
int n,b;
while(scanf("%d%d",&n,&b)!=EOF)
{
int count;
count=n/b;
printf("%d\n",count);
}
return 0;
}  
 
#include <iostream>//最优程序
using namespace std;
int main()
{
    int n,r;
    while(cin>>n>>r)
    cout<<n/r<<endl;
}        

**455、


棕色帽子

时限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
       
最近发觉了一个搞笑的游艺,可是当下还并未打了。一个舞会上,每个人头上都戴在同暨帽子,帽子唯有黑白两种植,黑的起码有同届。每个人还可以够望别人帽子的颜
色,不过看无显示自己的。主持人先给我们省人家头上戴的凡什么罪名,然后关灯,倘使有人觉得自己戴的之黑色帽子,就起自己一个耳光(C语言 4,都至极自觉,而且不可能打别人的哦),开灯,关灯,开灯……。因为还不惦记从自己耳光,所以无确定的气象下还无相会由自己之,现在发生n顶紫色帽子,第几不良关灯才会面听到有人打自己耳光?

输入
先是实践就生一个整数m(m<=100000),表示测试数据组数。
紧接下的m行,每行有一个整数n(n<=100000000),表示褐色帽子的顶数。

输出
输出第两回关灯能听到耳光声,每组输出占一行。

样例输入
1
2

样例输出
2

来源
原创

上传者
ACM_杨延玺

#include<stdio.h>
int main()
{
    int k;
    scanf("%d",&k);
    while(k--)
    {
        int n;
        scanf("%d",&n);
        printf("%d\n",n);
    }
    return 0;
}
  
#include<cstdio>//最优程序
main(){char _[15];gets(_);while(gets(_))puts(_);}        

**457、


大小写交换

时刻限制:1000
ms  |  内存限制:65535 KB

难度:0

描述
     
现在给来了一个可是含大小写字母的字符串,不分包空格和换行,要求把中的雅写换成稍写,小写换成大写,然后输出交换后的字符串。

输入
首先举办就发生一个整数m(m<=10),表示测试数据组数。
接通下的m行,每行有一个字符串(长度不领先100)。

输出
输出互换后底字符串,每组输出占一行。

样例输入
2
Acm
ACCEPTED

样例输出
aCM
accepted

来源
原创

上传者
ACM_杨延玺

#include<stdio.h>
#include<string.h>
int main() {
    int n, i, len;
    char a[100];
    scanf("%d", &n);
    while (n--) {
        scanf("%s", a);
        len = strlen(a);
        for (i = 0; i < len; i++) {
            if (a[i] <= 'z' && a[i] >= 'a')
                a[i] = a[i] - 32;
            else
                a[i] = a[i] + 32;
        }
        printf("%s\n", a);
    }
    return 0;
}
 
#include<stdio.h>//最优程序
int main()
{
    int a,b,c,n;
    char x;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        while(scanf("%c",&x)&&x!='\n')
        {
            if(x>=97&&x<=122) printf("%c",x-32);
            else if(x<=90&&x>=64) printf("%c",x+32);
        }
        printf("\n");
    }
}        

**458、


小光棍数

时间范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
目前Topcoder的XD碰到了一个难题,倘若一个往往底老三坏方的继三号是111,他把如此的频繁称为小光棍数。他早就知晓了第一个小光棍数是471,471之老三破在是104487111,现在他怀念精晓第m(m<=10000000000)个稍光棍数是微?

输入
出差不多组测试数据。第一举办一个整数n,表示出n组测试数据。接下来的每行有一个整数m。

输出
出口第m只小光棍数。

样例输入
1
1

样例输出
471

来源
原创

上传者
wmnwmn

#include "iostream"
using namespace std;
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        long long m;
        cin>>m;
        cout<<(m-1)*1000+471<<endl;
    }
    return 0;
}    
 
#include<stdio.h>//最优程序
int main()
{
    long long a,b,c,d,e;
    scanf("%lld",&a);
    while(a--)
    {
        scanf("%lld",&b);
        printf("%lld\n",(b-1)*1000+471);
    }
    return 0;
}            

**463、


九九乘法表

光阴限制:1000
ms  |  内存限制:65535 KB

难度:1

描述
刻钟候依样画葫芦了的九九乘法表或将会合扎根于我们一生的记得,现在被咱重申那多少个温暖的记念,请编程输出九九乘法表.

举凡那种反过来的三角形啦,具体而下图:

各级半只姿态在此之前用一个空格
隔开。。。

输入
率先出一个平头N,表示来N组数据(N<10)
属下去由N行,每行惟有一个整数M(1<=M<=9);

输出
本着承诺每个整数M,遵照要求输出乘法表的前头N行,具体格式参见输入输出样例和达到图.
各级半组测试数据结果中出一个空行隔开,具体而输出样例。

样例输入
3
2
1
5

样例输出
11=1 12=2 13=3 14=4 15=5 16=6 17=7 18=8 19=9
2
2=4 23=6 24=8 25=10 26=12 27=14 28=16 2*9=18

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45

来源
原创

上传者
ACM_赵铭浩

#include "iostream"
using namespace std;
int main(int argc, char const *argv[])
{
    int n,i,j,m;
    cin>>n;
    while(n--)
    {
        cin>>m;
        for(i=1; i<=m; i++)
        {
            for(j=i; j<=9; j++)
                cout<<i<<'*'<<j<<'='<<i*j<<' ';
            cout<<endl;
        }
    }
    return 0;
}
   
#include<stdio.h>//最优程序
int main()
{
    int t,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            for(int j=i;j<10;j++)
                printf("%d*%d=%d ",i,j,i*j);
            printf("\n");
        }
    }
}              

**477、


A+B Problem III

日子限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
求A+B是否与C相等。

输入
T组测试数据。
每组数据中来两只实数A,B,C(-10000.0<=A,B<=10000.0,-20000.0<=C<=20000.0)
数码保证小数点后无超4各项。

输出
假使当则输出Yes
不抵则输出No

样例输入
3
-11.1 +11.1 0
11 -11.25 -0.25
1 2 +4

样例输出
Yes
Yes
No

上传者
李文鑫

#include "iostream"
using namespace std;
int main(int argc, char const *argv[])
{
    int n;
    cin>>n;
    while(n--)
    {
        double a,b,c;
        cin>>a>>b>>c;
        if((a+b-c>-0.0001)&&(a+b-c<0.0001))
            cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}    
 
#include <cstdio>//最优程序
#include <math.h>
double a,b,c;
main()
{
    for(scanf("%lf",&a);~scanf("%lf%lf%lf",&a,&b,&c);puts(fabs(c-(a+b))<1e-6?"Yes":"No"));
}        

**484、


The Famous Clock

时间范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
Mr.
B, Mr. G and Mr. M are now in Warsaw, Poland, for the 2012’s ACM-ICPC
World Finals Contest. They’ve decided to take a 5 hours training every
day before the contest. Also, they plan to start training at 10:00 each
day since the World Final Contest will do so. The scenery in Warsaw is
so attractive that Mr. B would always like to take a walk outside for a
while after breakfast. However, Mr. B have to go back before training
starts, otherwise his teammates will be annoyed. Here is a problem: Mr.
B does not have a watch. In order to know the exact time, he has bought
a new watch in Warsaw, but all the numbers on that watch are represented
in Roman Numerals. Mr. B cannot understand such kind of numbers. Can you
translate for him?

输入
Each test case contains a single line indicating a Roman Numerals that
to be translated. All the numbers can be found on clocks. That is, each
number in the input represents an integer between 1 and 12. Roman
Numerals are expressed by strings consisting of uppercase ‘I’, ‘V’ and
‘X’. See the sample input for further information.

输出
For each test case, display a single line containing a decimal number
corresponding to the given Roman Numerals.

样例输入
I
II
III
IV
V
VI
VII
VIII
IX
X
XI
XII

样例输出
Case 1: 1
Case 2: 2
Case 3: 3
Case 4: 4
Case 5: 5
Case 6: 6
Case 7: 7
Case 8: 8
Case 9: 9
Case 10: 10
Case 11: 11
Case 12: 12

来源
HDU

上传者
ACM_宋志恒

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a;
    int count=1;
    while(cin>>a)
    {
        if(a=="I")
        {
            cout<<"Case "<<count<<": 1"<<endl;
            count++;
        }
        if(a=="II")
        {
            cout<<"Case "<<count<<": 2"<<endl;
            count++;
        }
        if(a=="III")
        {
            cout<<"Case "<<count<<": 3"<<endl;
            count++;
        }
        if(a=="IV")
        {
            cout<<"Case "<<count<<": 4"<<endl;
            count++;
        }
        if(a=="V")
        {
            cout<<"Case "<<count<<": 5"<<endl;
            count++;
        }
        if(a=="VI")
        {
            cout<<"Case "<<count<<": 6"<<endl;
            count++;
        }
        if(a=="VII")
        {
            cout<<"Case "<<count<<": 7"<<endl;
            count++;
        }
        if(a=="VIII")
        {
            cout<<"Case "<<count<<": 8"<<endl;
            count++;
        }
        if(a=="IX")
        {
            cout<<"Case "<<count<<": 9"<<endl;
            count++;
        }
        if(a=="X")
        {
            cout<<"Case "<<count<<": 10"<<endl;
            count++;
        }
        if(a=="XI")
        {
            cout<<"Case "<<count<<": 11"<<endl;
            count++;
        }
        if(a=="XII")
        {
            cout<<"Case "<<count<<": 12"<<endl;
            count++;
        }
    }

    return 0;
}
  
#include<map>//最优程序
#include<iostream>
#include<string>
using namespace std;
map<string,int>m;
int main()
{
    m["I"]=1;
    m["II"]=2;
    m["III"]=3;
    m["IV"]=4;
    m["V"]=5;
    m["VI"]=6;
    m["VII"]=7;
    m["VIII"]=8;
    m["IX"]=9;
    m["X"]=10;
    m["XI"]=11;
    m["XII"]=12;
    string s;
    int c=0;
    while(cin>>s)
        cout<<"Case "<<++c<<": "<<m[s]<<endl;
    return 0;
}        

**596、


哪个是极致好的Coder

时间范围:1000
ms  |  内存限制:65535 KB

难度:0

描述
计科班有这个Coder,帅帅想知道自己是匪是综合实力最强之coder。

帅帅喜欢帅,所以他选了帅气和编程水平当做评选正式。

每个同学的汇总得分是帅气程度得分及编程水平得分的跟。

外愿意你可以写一个顺序帮他弹指间。

输入
数据来差不多组。
输入一个数n,代表计科班的到底人数。
连通下有n行数,一行数出些许个数a,b。
个中a代表该同学的编程水平,b代表该同学的帅气程度。
n=0表示输入完毕。

输出
每组数据占一执,输出所有同学被综合得分最高的分数。

样例输入
5
9 10
7 11
1 6
5 7
3 5
2
7 3
7 6
0

样例输出
19
13

上传者
wsp0214

#include "stdio.h"
int main()
{
    int n,max=0,a,b,i;
   // freopen("input.txt","r",stdin);
    while(scanf("%d",&n),n)
    {   max=0;
        for(i=0; i<n; i++)
        {
            scanf("%d%d",&a,&b);
            if((a+b)>max)max=(a+b);
        }
        printf("%d\n",max);
    }
    return 0;
}     
 
#include<stdio.h>//最优程序
main(){int n;while(scanf("%d",&n),n){int a,b,s=0;while(n--){scanf("%d%d",&a,&b);if(a+b>s) s=a+b;}printf("%d\n",s);}}        

**599、


冲刺的略微蜗牛

时光限制:1000
ms  |  内存限制:65535 KB

难度:1

描述

说被可以站于金字塔顶的单独来点儿栽动物,一种植是鹰,一种是蜗牛。一只有有些蜗牛听了此相传后,大吃鼓舞,立志要爬上金字塔。为了促成自己之要,蜗牛找到了老
鹰,老鹰告诉她金字塔高H米,小蜗牛知道一个白天友好能够朝达爬10米,但鉴于夜间一旦休息,自己会稳中有降5米。它想精晓自己以第几上可以立在金字塔顶,它想叫您
帮他写单程序救助其。

输入
率先推行有一个整数t,表示t组测试数据。
仲实施一个整数H(0<H<10^9)代表金字塔的可观。

输出
输出一个平头n表示小蜗牛第n天立在金字塔顶上

样例输入
2
1
5

样例输出
1
1

上传者
ACM_王孝锋

#include<stdio.h>
int main(void)
{
    int H,i,t;
    scanf("%d",&t);
    for(i=1; i<=t; i++)
    {
        int day=1,h=0;
        scanf("%d",&H);
        while(h+10<H)
        {
            h+=5;
            day++;
        }
        printf("%d\n",day);
    }
    return 0;
}

**733、


万上节派对

时刻范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
万圣节有一个Party,XadillaX分明也要错过凑热闹了。因为去凑热闹的口万分庞大,几十W的多寡级吧,自然则进场便得出派票了。很幸运的,XadillaX竟然将到了相同摆真·门票!这真·门票的排规则有点出乎意料:

  1. 门票号是由0~6组成的六各项数(0~6这几独数字只是接纳)

  2. 各国一个门票号的各一样各项不可知有三独连相同之数字(如123335凡是殊的)

  3. 诸一个门票号相邻的有限号相差必须于四之下(≤4)(如016245是蛮的)

输入
率先执行一个n,代表输入个数
连片下n行,每行两单数字x,y(x <= y)

输出
于每个测试,输出x到y之间的入场券编号。每个测试结尾中空行。

样例输入
2
001001 001002
001011 001012

样例输出
001001
001002

001011
001012

来源
NBOJ-1004

上传者
勿念情

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int ticket1, ticket2, i, j;
        int flag1, flag2, flag3;
        char x[6];
        scanf("%d %d",&ticket1, &ticket2);
        for (i = ticket1; i <= ticket2; i++)
        {
            flag1 = 1;
            flag2 = 1;
            flag3=1;
            x[0] = i / 100000 + '0';
            x[1] = i /10000 % 10 + '0';
            x[2] = i / 1000 % 10 + '0';
            x[3] = i / 100 % 10 + '0';
            x[4] = i / 10 % 10 + '0';
            x[5] = i % 10 + '0';
            for (j = 0; j < 6; j++)
                if (x[j] - '0' > 6)
                {
                    flag3 = 0;
                    break;
                }
            for (j = 0; j < 5; j++)
                if (fabs(x[j] - x[j+1]) >4)
                {
                    flag1 = 0;
                    break;
                }
            for (j = 0; j < 4; j++)
                if (x[j] - x[j+1] == 0 && x[j] - x[j+2] == 0)
                {
                    flag2 = 0;
                    break;
                }
            if (flag1 == 1 && flag2 == 1 && flag3 == 1)
            {
                for (j = 0; j < 6; j++)
                    printf("%c",x[j]);
                printf("\n");
            }
        }
        printf("\n");
    }
    return 0;
}

**779、


南通烧饼

光阴限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
火烧有三三两两冲,要做好一个中山烧饼,要少于给还作热。当然,一破只可以打一个以来,功效就是最好没有了。有如此一个大平底锅,一赖可同时放入k个名古屋烧饼,一分钟可以抓好一面。而现在有n个嘉兴烧饼,至少需有些分钟才可以一切做好也?

输入
逐输入n和k,中间以空格分隔,其中1 <= k,n <= 100000

输出
输出全部善至少要之分钟数

样例输入
3 2

样例输出
3

提示
即使样例,多少个大连烧饼编号a,b,c,首先a和b,然后a和c,最后b和c,3秒钟成功

上传者
勿念情

#include<stdio.h>
int main() {
    int n, k;
    while (scanf("%d%d", &n, &k) != EOF) {
        if (n < k)
            printf("2\n");
        else {
            if (2 * n % k == 0)
                printf("%d\n", 2 * n / k);
            else
                printf("%d\n", 2 * n / k + 1);
        }
    }
    return 0;
}

**811、


变态最大值

时范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
Yougth讲课的时光考察了弹指间央三单数最好特别价值是问题,没悟出我们精晓的这样烂,幸好在外的提携下我们算解决了这一个问题,可是问题而来了。

他缅想以一如既往组数吃摸索一个频繁,这么些累得无是即刻组数中之优异酷之,可是只假诺相比较丰裕的,可是满意这法的累最好多了,怎么收拾呢?他想到了一个措施,把当时无异组数从上马将各级相邻两个数分成一组(组数是自从1始),奇数组的请求最好特别价值,偶数组的伏乞最好小价,然后搜索来那一个价值备受之尽可怜价值。

输入
生多组测试数据,以文件了符为标志。
每组测试数据首先一个N,是数组中数的个数。(0<N<10000,为减低题目难度,N是3的倍数)
接下来是数组中的这些往往。

输出
输出包括一行,就是里面的顶要命价值。

样例输入
3
4 5 6
6
1 2 3 7 9 5

样例输出
6
5

来源
Yougth原创

上传者
TC_杨闯亮

#include "iostream"
using namespace std;
int max1(int a,int b,int c)//我去,这里用的max,尼玛
{
    int t;
    if(a>b){t=a;a=b;b=t;}
    if(a>c){t=a;a=c;c=t;}
    if(b>c){t=b;b=c;c=t;}
    return c;
}
int min1(int x,int y,int z)
{
    int m;
    if(x>y){m=x;x=y;y=m;}
    if(x>z){m=x;x=z;z=m;}
    if(y>z){m=y;y=z;z=m;}
    return x;
}
int main(int argc, char const *argv[])
{
    int n,i,d[10001],e[4000];
    while(cin>>n)
    {
        int max=0;
        for(i=1;i<=n;i++)
        {
            cin>>d[i];
        }
        for(i=3;i<=n;i+=3)
        {
            if((i/3)%2==1)
            {
                e[i/3]=max1(d[i-2],d[i-1],d[i]);
            }
            if((i/3)%2==0)
            {
                e[i/3]=min1(d[i-2],d[i-1],d[i]);
            }
        }
        max=e[1];
        for(i=2;i<=n/3;i++)
            if(e[i]>max) max=e[i];
        cout<<max<<endl;
    }
    return 0;
}
  
#include <cstdio>//最优程序
#define Max(a,b,c) a>(b>c?b:c)?a:(b>c?b:c)
#define Min(a,b,c) a>(b>c?c:b)?(b>c?c:b):a
int main()
{
    int a[10005];
    int n,i,j,h;
    while(~scanf("%d",&n))
    {
        int max=1<<32;
        for(i=0;i<n&&scanf("%d",&a[i]);i++){}
        for(i=0;i<n;i+=3){
            h=i%2==0?Max(a[i],a[i+1],a[i+2]):Min(a[i],a[i+1],a[i+2]);
            max=h>max?h:max;
        }
        printf("%d\n",max);
    }
    return 0;
}               

**813、


对决

时光限制:1000
ms  |  内存限制:65535 KB

难度:0

描述
Topcoder 招进来了 n
个新校友,Yougth计划将那多少个n个同学分成两组,要求每组中每个人不可以不和任何一样组中每个同学举办同样浅算法对决,问存不有一样种分组办法于k场完成对决。(两组中各样一样组吃人数还要大于0)

输入
来差不多组测试数据,每组测试数据两独数 n 和 k
,n和k都为0时表示输入完毕。(0<n<10000,0<k<1000000)

输出
出口一行,假诺可以,输出YES,不行的说话输出NO。

样例输入
4 1
4 3
4 4
2 1
3 3
0 0

样例输出
NO
YES
YES
YES
NO

提示
4独人分为两组,1暨3固然需要对决3集市,2及2尽管需对决4庙会。

来源
Yougth原创

上传者
TC_杨闯亮

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int i,n,k;
    while(scanf("%d%d",&n,&k),n,k)
    {
        int jt=0;
        for(i=0; i<n; i++)
        {
            if(k==i*(n-i))
            {
                printf("YES\n");
                jt=1;
                break;
            }
        }
        if(jt==0)
            printf("NO\n");
    }
    return 0;
}   
 
#include <cstdio>//最优程序

int main()
{
    int n,k;
    while(scanf("%d%d",&n,&k)&&(n||k))
    {
        int ok=0;
        for(int i=1;i<=n/2;i++)
        {
            if(i*(n-i)==k)
                ok=1;continue;
        }
        if(ok)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}             

**822、


画图

光阴限制:1000
ms  |  内存限制:65535 KB

难度:0

描述
微机画图也甚有趣之哈!这我们虽来所以微机画幅图吧。。。

输入
输入一个正整数N(0<N<=10),表示只要出口的正方形的一旁*的个数

输出
出口一个满意题意的正方形

样例输入
4

样例输出



上传者
TC_赵坤垚

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int n,i,j;
    scanf("%d",&n);
    for (i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

**833、


取石子(七)

时刻范围:1000
ms  |  内存限制:65535 KB

难度:1

描述
Yougth和Hrdv玩一个戏耍,拿出n个石子摆成一围,Yougth和Hrdv分别于内获石子,何人先得到完者胜,每趟可从中得到一个要相邻两独,Hrdv先取,输出胜利着的名字。

输入
输入包括多组测试数据。
每组测试数据一个n,数据保证int范围外。

输出
出口胜利者的名字。

样例输入
2
3

样例输出
Hrdv
Yougth

来源
Poj

上传者
TC_杨闯亮

#include <stdio.h>
int main(void) {
    int n;
    while (scanf("%d", &n) != EOF) {
        if (n < 3)
            printf("Hrdv\n");
        else
            printf("Yougth\n");
    }
}
 
#include<cstdio>
int n;
int main()
{
    while(~scanf("%d",&n))
        printf(n>=3?"Yougth\n":"Hrdv\n");
    return 0;
}        

**844、


A+B Problem(V)

岁月限定:1000
ms  |  内存限制:65535 KB

难度:1

描述
举行了A+B
Problem之后,Yougth感觉无与伦比简单了,于是他惦念被你要来些许个数反转后相加的价。帮拉他吧

输入
暴发差不多组测试数据。每组包括个别单数m和n,数据保证int范围,当m和n同时为0是代表输入完。

输出
出口反转后相加的结果。

样例输入
1234 1234
125 117
0 0

样例输出
8642
1232

来源
Yougth原创

上传者
TC_杨闯亮

#include <stdio.h>

/* 整数反转 */
long long rev(int a) {
    long long s = 0;

    while (a) {
        s = s * 10 + a % 10;
        a /= 10;
    }
    return s;
}

int main(void) {
    int m, n;
    long long M, N;

    while (1) {
        scanf("%d%d", &m, &n);
        if (m == 0 && n == 0)
            break;
        printf("%lld\n", rev(m) + rev(n));
    }
    return 0;
}
 
#include <iostream>//最优程序
#include <string>
using namespace std;
int main()
{
    string s,t;
    int x,y;
    while(cin>>s>>t)
    {
        int x=0,y=0;
        if(s[0]=='0'&&t[0]=='0')
            break;
        for(int i=s.size()-1;i>=0;i--)
            x=x*10+(s[i]-'0');
        for(int i=t.size()-1;i>=0;i--)
            y=y*10+(t[i]-'0');
        cout<<x+y<<endl;
    }
    return 0;
}       

**845、


任主的地1

时间范围:1000
ms  |  内存限制:65535 KB

难度:0

描述
分段
晓目前在玩无主之地1,他对之戏之评价是,结合了FPS与RPG元素,可玩度很高。不过,他意识了时代的任务系统召开的坏,任务系统并从未帮他总计清楚哪个区域有小任务,而且,给任务之时呢,也相比较混乱。比如,在1区域之一个任务点,你提了4独任务;2区域之一个任务点,你领取了3单任务;游
戏一段时间后,你还要于1区域外一个任务点单领到了3职责(往日任务没有得),3区域领到了9单任务……他感到甚混乱,现在他如若规划一个序来总结每个区
域有多少只任务。

输入
多组测试数据,以失败入0 0截至
每组数据占一履行,输入m区域,n个任务(0<m,n<100)

输出
输出各样区域的总计结果(不求排序)

样例输入
1 3
2 3
3 4
1 7
0 0

样例输出
1 10
2 3
3 4

来源
原创

上传者
TC_高金

#include <stdio.h>

int main()
{
    int m,n,i,j;
    int a[100]= {0};
    int c[100]= {0},k=0;
    while(scanf("%d %d",&m,&n)&&m&&n)
    {
        a[m]+=n;
        c[k++]=m;
    }
    for(i=0; i<k-1; i++)
    {
        for(j=i+1; j<k; j++)
        {
            if(c[i]==c[j])
                c[j]=0;
        }
    }
    for(i=0; i<k; i++)
    {
        if(c[i]!=0)
        {
            printf("%d %d\n",c[i],a[c[i]]);
            c[i]=0;
        }
    }
    return 0;
}

**975、


关于521

日限定:1000 ms  |  内存限制:65535 KB

难度:2

描述
Acm队之气数对数学之钻研不是死透彻,不过屡教不改的客要想一头钻进去。


览网页的命局忽然看到了网上有人据此玫瑰花瓣拼成了521叔单数字,立时觉得好性感,因为每个男生还会晤不留心的成妖冶之成立者。此后,大运动及什么地方还可以够看
到5、2、1老五只数字,他愤了,现在外感怀清楚在一连的累着来微微数遍包含了这三单数字。例如12356就终于一个,而5111便无到底。特别之,倘诺他张
了521叔单数连续出现,会特意之气愤。例如35210。

输入
多组测试数据:
一行于一定两独数a,b(0<a,b<1000000),表示数字之始发和截至。

输出
一行彰显他惦念只要领悟之高频起几乎单同显示有微个数字让外特其余义愤。用空格隔开。

样例输入
200 500300 9001 600

样例输出
Case 1:2 0Case 2:2 1Case 3:6 1

来源
流年

上传者
ACM_安鹏程

#include <iostream>
#include <string.h>
using namespace std;
int array[2][1000010];
int main()
{
    int a, b, c;
    int cnt = 0, cntp = 0;
    memset(array, 0, sizeof(array));
    for (int i = 1; i <= 1000000; i++)
    {
        a = b = c = 0;
        if ((i/100000)%10 == 1 || (i/10000)%10 == 1
                || (i/1000)%10 == 1 || (i/100)%10 == 1 || (i/10)%10 == 1 || i%10 == 1)
            a = 1;
        if ((i/100000)%10 == 2 || (i/10000)%10 == 2
                || (i/1000)%10 == 2 || (i/100)%10 == 2 || (i/10)%10 == 2 || i%10 == 2)
            b = 1;
        if ((i/100000)%10 == 5 || (i/10000)%10 == 5
                || (i/1000)%10 == 5 || (i/100)%10 == 5 || (i/10)%10 == 5 || i%10 == 5)
            c = 1;
        if (a && b && c)
            ++cnt;
        if ((i/1000)%1000 == 521 || (i/100)%1000 == 521
                || (i/10)%1000 == 521 || (i%1000) == 521)
            ++cntp;
        array[0][i] += cnt;
        array[1][i] += cntp;
    }
    int x, y, ca = 0;
    while (cin >> x >> y)
    {
        cout << "Case " << ++ca << ":";
        cout << array[0][y] - array[0][x-1] << " "
             << array[1][y] - array[1][x-1] << endl;
    }
    return 0;
}   
 
#include<stdio.h>//最优程序
int a[2][1000001]={0};
int main()
{
int k=0,i,sum=0;
for(i=1;i<=1000000;i++)
{
if((i%10==5||(i/10)%10==5||(i/100)%10==5||(i/1000)%10==5||(i/10000)%10==5||(i/100000)%10==5)&&(i%10==2||(i/10)%10==2||(i/100)%10==2||(i/1000)%10==2
||(i/10000)%10==2||(i/100000)%10==2)&&(i%10==1||(i/10)%10==1||(i/100)%10==1||(i/1000)%10==1||(i/10000)%10==1||(i/100000)%10==1))
{sum++;
if(i/1000==521||(i/100)%1000==521||(i/10)%1000==521||i%1000==521)k++;}
a[0][i]+=sum;
a[1][i]+=k;
}
int m,n,w=0;
while(scanf("%d%d",&n,&m)!=EOF)
printf("Case %d:%d %d\n",++w,a[0][m]-a[0][n-1],a[1][m]-a[1][n-1]);
}             

**1071、


不可以!

日子限制:1000
ms  |  内存限制:65535 KB

难度:1

描述
判断:两单数x、y的正负性。

求:不得以采用相比运算符,即”<“,”>”,”<=”,”>=”,”==”,”!=”。

C语言 5

输入
生差不多组数,每组数据占一执行,每一样执行五只数x,y。
x、y保证在int范围内。

输出
每组数据输出占一行。
假使少只数是一正一负,输出”Signs are opposite”
设如若暨为刚刚依然和为因,输出”Signs are not opposot”
假诺无法确定,输出”Signs can’t be sure”
输出不包括引号

样例输入
1 1
-1 1

样例输出
Signs are not opposot
Signs are opposite

提示
倘对本题有何问题,请到研究区咨询或邮件我!

来源
爱生活

上传者
TCM_张鹏

/*
 * http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1071
 * by jtahstu on 2015/2/11 15:00 
 * copy csdn 听自己心跳的声音 
 * http://blog.csdn.net/u013634213/article/details/40055329
 */
#include<cstdio>
#include<cstring>
int main() {
    int a, b;
    while (scanf("%d%d", &a, &b) != EOF) {
        if (!(a * b)) {
            puts("Signs can't be sure");
            continue;
        }
        if ((a >> 31) ^ (b >> 31))
            puts("Signs are opposite");
        else
            puts("Signs are not opposot");
    }
    return 0;
}
  
#include<stdio.h>//最优程序
int main()
{
    int a,b,c;
    while(~scanf("%d%d",&a,&b))
    {
        c=((a>>31)&1)+((b>>31)&1);
        if((!a)||(!b))printf("Signs can't be sure\n");
        else printf("Signs are %s\n",c&1?"opposite":"not opposot");
    }
}        

**1092、


数字分隔(二)

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

描述
在一个长久的国,银行为还快还好之处理用户之订单,决定拿一整串的数字以一定之平整分隔开来,分隔规则如下:

1、实数的平头有以每三单数字用逗号分隔开(整数片之上位有剩余的0时,需先将剩下的0过过滤后,再展开数字分隔,如:0001234567
输出结果吗1,234,567.00)

2、小数部分保留少数员小数(四丢弃五抱)

3、要是该数是指的,则当输出时需要用括号将分隔后的数字括起来,例如:-10005.1645的输出结果吧(10,005.16)
 

输入
多组测试数据,每行输入一个实数n(n的位数小于100)

输出
出口分隔后底结果

样例输入
00012345670.0000-10005.1645

样例输出
1,234,567.000.00(10,005.16)

来源
calamity_coming

上传者
ACM_孙毓阳

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char s[110],t[110],r[110];
    while(cin>>s)
    {
        memset(r,'\0',sizeof(r));
        memset(t,'\0',sizeof(t));
        int i,l,poi=0,dis,car,k=0,f=1,j=0;
        l=strlen(s);
        for(i=s[0]=='-'?1:0; i<l; i++)//处理原字符串
        {
            if(s[i]!='0'&&f)
            {
                if(s[i]=='.')
                    t[j++]='0';
                f=0;
            }
            if(s[i]=='0'&&f) continue;
            else t[j++]=s[i];
        }
        if(!j) {
                t[j++]='0';f=0;//判断当原字符串为0时的情况
        }
        for(i=0; i<j; i++)
        {
            if(t[i]=='.')
            {
                poi=i;//找出小数点的位置
                f=1;//如果有小数点,则f置1
                break;
            }
        }
        if(f)//当字符串有小数点时
        {
            dis=j-1-poi;//计算小数点到字符串末尾的距离
            if(dis==2) for(i=j-1; i>=0; i--)r[k++]=t[i];//如果只有两位小数,原样输出
            else if(dis==1)//如果有一位小数,则最后一位补0
            {
                r[k++]='0';
                for(i=j-1; i>=0; i--) r[k++]=t[i];
            }
            else//如果距离大于2
            {
                if(t[poi+3]<'5') for(i=poi+2; i>=0; i--)r[k++]=t[i];//如果第三位小数小于5
                else//如果第三位小数大于5
                {
                    car=1;
                    for(i=poi+2; i>=0; i--)
                    {
                        if(t[i]=='.')
                        {
                            r[k++]=t[i];
                            continue;
                        }
                        if(car) t[i]+=1;
                        if(t[i]>'9')
                        {
                            t[i]='0';
                            car=1;
                        }
                        else car=0;
                        r[k++]=t[i];
                    }
                    if(t[0]=='0')
                        r[k++]='1';
                }
            }
        }
        else for(i=j-1; i>=0; i--)r[k++]=t[i];//没有小数点,原样输出
        if(s[0]=='-')//如果是负数
        {
            if(!f)
            {
                cout<<'(';//负数需要在字符串前后加上括号
                for(i=k-1; i>=0; i--)
                {
                    cout<<r[i];
                    if(i%3==0&&i) cout<<',';//控制','的位置
                }
                cout<<".00"<<')'<<endl;//没有小数点,补上小数点和两位零
            }
            else
            {
                cout<<'(';
                for(i=k-1; i>=0; i--)
                {
                    cout<<r[i];
                    if(i%3==0&&i>3) cout<<',';
                }
                cout<<')'<<endl;
            }
        }
        else
        {
            if(!f)
            {
                for(i=k-1; i>=0; i--)
                {
                    cout<<r[i];
                    if(i%3==0&&i) cout<<',';
                }
                cout<<".00"<<endl;
            }
            else
            {
                for(i=k-1; i>=0; i--)
                {
                    cout<<r[i];
                    if(i%3==0&&i>3) cout<<',';
                }
                cout<<endl;
            }
        }
    }
}        

**1104、


尽管自己无坑

时刻限定:1000
ms  |  内存限制:65535 KB

难度:0

描述
as we all know
,就自身非坑,呵呵,当然,这一次自己或者未坑,我就受您拉我翻一下数字即可。

所谓翻译,就是拿一个数字用粤语读出来,很粗略吧,快快AC吧。

数字的闽南语表示分别吗:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿.

输入
int 范围外,保证对,EOF。

输出
故而自身于您的国语写出来就是哼了

样例输入
10
1052
10000

样例输出
壹拾
壹仟零伍拾贰
壹万

提示
本身确实不坑。

来源
汝随便自己耶

上传者
ACM_刘炀

这题换题了,之前不是这题目,所以就粘贴了一份来
 
#include<stdio.h>
#include<string.h>
int main()
{
    char ch[20];
    int len,i,k,t,p;
    while(scanf("%s",ch)!=EOF)
    {
        k=0;p=1;
        len=strlen(ch);
        for(i=0;i<len;i++)
        {
            t=len-k;
            if(ch[i]=='0'&&(t-1)%4!=0&&ch[i+1]!='0'||ch[0]=='0')    printf("零");
            if(ch[i]=='1')    printf("壹");
            if(ch[i]=='2')    printf("贰");
            if(ch[i]=='3')    printf("叁");
            if(ch[i]=='4')    printf("肆");
            if(ch[i]=='5')    printf("伍");
            if(ch[i]=='6')    printf("陆");
            if(ch[i]=='7')    printf("柒");
            if(ch[i]=='8')    printf("捌");
            if(ch[i]=='9')    printf("玖");
            if(ch[i]!='0'||(t-1)%4==0)
            {
                if(t==10)    printf("拾");
                if(t==9)    printf("亿"); 
                if(t==8)    printf("仟");
                if(t==7)    printf("佰");
                if(t==6)    printf("拾");
                if(t==5&&(ch[k]!='0'||ch[k-1]!='0'||ch[k-2]!='0'||ch[k-3]!='0'))    printf("万");
                if(t==4)    printf("仟");
                if(t==3)    printf("佰");
                if(t==2)    printf("拾");
                
            }
            k++; 
        }
        printf("\n");
    }
    
    return 0;
}               

**           OK,本文到者也虽然终止了,也花了自家好几独钟头之日子,但AC那些题却用了一些单月,花了十分长之时光,也是边刷边上学,不断立异,下次更写汇总也不知何年何月了,但尚相会写其他的,立时学java了,又有的写了,逐步来。