zoukankan      html  css  js  c++  java
  • 1111我和程序有个约会

    5604: Kannyi打印模板 分享至QQ空间

    时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte
    总提交: 143            测试通过:35

    描述

     

    Kannyi要去沈阳参加比赛,赛前要用5106的打印机打一份模板以便赛场上使用。

    奈何机房打印机出了点问题,双面打印总是不能很好完成,打印机会打印出偶数面,但是中间会夹杂白纸类似的情况,按理说他只要把它再放进去就好了,但是现在他要手动打印避免错误。他选择分段进行打印,BobHuang说那让我用代码给你生成吧。请你写一份和BobHuang一样的代码。

    比如这个份模板5页,偶数页已经打印并整理好了,他需要把这三页一起打印,输出1,3,5就好了。

    输入

     

    输入数据包含多个测试实例,每个测试实例占一行,为这份模板的页数n和分成的段k。

    多组数据以n=0,k=0结束。

    输出

     

    每个样例输出第一行为Case x:

    然后输出为k行,第i行为第i段当要打印的页数,相邻两页用","隔开。

    样例输入

    5 1
    6 2
    20 3
    0 0

    样例输出

    Case 1:
    1,3,5
    Case 2:
    1,3
    5
    Case 3:
    1,3,5,7
    9,11,13,15
    17,19

    这个其实就是循环模拟题,模拟出来一行需要打印的就好。

    这里数据出了锅,卡了chengyu的做法,不好意思啊。

    #include<stdio.h>
    int main()
    {
        int n,k,ca=0;
        while(scanf("%d%d",&n,&k),n||k)
        {
            int s=((n+1)/2+k-1)/k,f=0,i;
            printf("Case %d:
    ",++ca);
            for(i=1; i<=n; i+=2)
            {
                if(f!=s-1&&i!=n&&i!=n-1)printf("%d,",i),f++;//不是最后一个数or不到换行
                else printf("%d
    ",i),f=0;
            }
        }
        return 0;
    }

    这里还有一份验题组的代码

    #include<stdio.h>
    int main()
    {
        int n,k,i,m=1,r,t,j;
        while(scanf("%d %d",&n,&k),n||k)
        {
            printf("Case %d:
    ",m++);
            if(n%2==0)
            {
                r=n/2;
                n--;
            }
            else
                r=n/2+1;
            if(r%k==0)
                r=r/k;
            else
                r=r/k+1;
            j=0;
            for(i=1; i<=n; i+=2)
            {
                if(!j)
                    printf("%d",i);
                else
                    printf(",%d",i);
                j++;
                if(j==r)
                {
                    printf("
    ");
                    j=0;
                }
            }
            if(j)
                printf("
    ");
        }
        return 0;
    }

    5605: 祝crq生日快乐 分享至QQ空间

    Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
    Total Submit: 184            Accepted:164

    Description

     

    2008-2018 TOJ已经走过了10年,这10年的故事有些我们不能知道,有些在2018年校赛的演讲稿可以看到当你有改变世界能力时,请做一个良... 

    不管你做不做ACM,每个计算机系同学都面临着一个问题,就是进行程序设计,从C语言到C++,再到C#、Java,再到汇编、PHP,你离不开的就是编程。crq对于程序设计的热爱,我认为是高过每一个人的。你对他反映TOJ的不仅限于题目问题,往往都会第一时间解答。C语言的入门也是一个十分头疼的问题,但是crq会带着大家一同走过那段艰难的行程。每年开学初他都会投入大量的经历到C语言的入门中去,很多同学都是他投入时间的受益者。甚至你可以和他聊些自己的私事,他也会帮你排忧解难满,着实一个热心肠。我相信除了我,不少同学也受益过,但是毫无疑问我们剥夺了他休息的时间,即使他帮助别人也获得了快乐。

    在参加算法竞赛的时间里,我意识到了自己投入时间去学习才是最重要的,自己要踏踏实实的,一步一个脚印,往往才是学习最行之有效的方法。所以在这个投入和产出不一定成正比的竞赛中,兴趣是重要的。你可以很菜,但是你需要保持一颗永远向上的心。crq在这个竞赛中也投入了很多时间和精力,很多出色的毕业生都是玩这个的,和他悉心浇灌ACM这块土地是分不开的。

    我们不需要歌功颂德,对于这些老师们来讲,他们最大的幸福就是看着我们在所学专业有所收获。以上也纯粹为学长的叨叨,也希望各位老师可以天天开心,各位同学可以快乐地度过自己的大学生活。

    11月11日不仅是购物狂欢节,也是crq的生日,请为他送上生日祝福。

    Input

     

    本题没有输入。

    Output

     

    请输出"Happy Birthday!"(不包含引号)。

    Sample Input

     

    Sample Output

    Happy Birthday!

    真的是纯粹学长想说的话,输出就行啦,一起祝老师生日快乐

    #include<stdio.h>
    int main()
    {
        printf("Happy Birthday!");
        return 0;
    }

    5606: taozi的小难题 分享至QQ空间

    Time Limit(Common/Java):500MS/1500MS     Memory Limit:65536KByte
    Total Submit: 164            Accepted:18

    Description

     

    从前有一个抠门的国王taozi,一天他的领土受到了其它国家的侵略,于是taozi决定组建一个骑士团击退敌人。当然招募骑士也是需要花费金币的,这里就以骑士的攻击力来给金币,抠门的taozi看到了这么多骑士前来,很头痛,于是taozi找到了聪明的你,让你去帮他解决这个问题。

    Input

     

    输入多组数据,对于每组数据,第一行输入一个n,m,分别代表n个敌人和m个骑士,接下来n个数代表敌人的攻击力a,然后m个数代表雇佣骑士的攻击力b,多组数据以n=0,m=0结束。
    数据规定

    1≤n,m≤10000

    1≤a,b≤100

    Output

     

    对于每组数据,输出国王最少需要花费多少金币雇佣骑士才能杀死所有敌人,如果不行输出-1。

    Sample Input

    2 3
    5 4
    7 8 4
    2 1
    5 5
    10
    0 0

    Sample Output

    11
    -1

    Hint

    第一组数据,taozi选择第3号骑士打败2号敌人,选择第1号骑士打败1号敌人,总共花费11元。

    第二组数据,taozi无论怎么选都打不过敌人。

    这个题目本来是sort,但是

     因为攻击力最多100 ,所以开始开两个100的数组 ,然后100^2完事 
    #include<stdio.h>
    
    int main()
    {
        int i,j,k,n,m,x;
        while(scanf("%d%d",&n,&m)!=EOF,n||m)
        {
            int a[105]={0},b[105]={0};
            for(i=0;i<n;i++)
            {
                scanf("%d",&x);
                a[x]++;
            }
            for(i=0;i<m;i++)
            {
                scanf("%d",&x);
                b[x]++;
            }
            int sum=0,f=1;
            for(i=1;i<=100;i++)
            {
                for(j=1;j<=a[i];j++)
                {
                    f=0;
                    for(k=i;k<=100;k++)
                    {
                        if(b[k]>0)
                        {
                            b[k]--;
                            sum+=k;
                            f=1;
                            break;
                        }
                    }
                    if(f==0)break;
                }
                if(f==0)break;
            }
            if(f==0)printf("-1
    ");
            else printf("%d
    ",sum);
        }
        return 0;
    }

    5607: taozi的签到题 分享至QQ空间

    Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
    Total Submit: 637            Accepted:75

    Description

     

    题目很简单,就是求1到n中能被2或3或6或8整除的数有几个。

    Input

     

    多组输入,每行输入一个正整数n(n<=1000000),以n为0结束(组数在10000左右)。

    Output

     

    输出1到n中能被2或3或6或8整除的数的个数。

    Sample Input

    10
    0

    Sample Output

    7

    查询比较多,所以大家疯狂wa

    我们可以理智分析下,是8的倍数一定是2的倍数,6的倍数一定是2和3的倍数

    所以所求就是2的倍数个数-3的倍数个数+6的倍数个数

    #include<stdio.h>
    int main()
    {
        int n;
        while(scanf("%d",&n),n)printf("%d
    ",n/2+n/3-n/6);
        return 0;
    }

    或者预处理,预处理就是提前处理出答案,下一次还在上一次的基础上进行判断

    #include <stdio.h>
    #define N 1000005
    int a[N];
    int main()
    {
        int n,i;
        for(i=1;i<N;i++)
        {
            a[i]=a[i-1];
            if(i%2==0||i%3==0||i%6==0||i%8==0) a[i]++;
        }
        while(scanf("%d",&n),n)printf("%d
    ",a[n]);
        return 0;
    }

    5608: 单身狗沙漠逃生 分享至QQ空间

    Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
    Total Submit: 20            Accepted:5

    Description

     

    1111是个有趣的节日,某单身狗没钱可花,没事可做。

    1541401467161087125.png

    沙漠里有一条很长的公路,单身狗想沿着公路进沙漠去探险。每走x公里路后,单身狗就要消耗x份食物(x为大于0的分数)。单身狗共准备了n份食物,但他身上最多背负m份食物(n%m为0,而且n/m<11)。如果食物可以在路边存放,为保证能原路返回出发点,单身狗最远能进入沙漠多少公里?

    Input

     

    输入数据包含多个测试实例,每个测试实例占一行,为这份食物份数n和最多背负的食物数m。(n<1111)

    多组数据以n=0,m=0结束。

    Output

     

    每组数据输出一行,代表单身最多进入沙漠的总公里数,为一最简分数,即分子和分母互质。

    Sample Input

    600 120
    1 1
    0 0

    Sample Output

    137/1
    1/2

    Hint

    这是一个极端构造的问题,我们可以尝试去构造极端条件并求解。

    由于单身狗每次只能背负120份食物,故他要从出发点出发5次。
    每次出发走一段距离后,就将食物放在路边做补充,然后返回出发点背负食物。 

    但是这个距离要走几次是固定的,比如第一段路就要走10 次,第二段路要走8次,第三段路要走6次,第四段路要走4次,第五次路要走2次。但是每段路的消耗的食物数和是固定的,均为120份。

    所以距离为120/10+120/8+120/6+120/4+120/2=137。

    所以题目变为了分数加法(雾)?好人做到底,偷偷告诉你,1~10的最小公倍数为2520。

    这个题目害怕大家想不到做法,所以提示里题解了一波。

    其实就是第一段路要走2*(n/k)次,消耗k份食物...最后一段路走2次,消耗k份食物。

    合并同类项借助2050的做法

    #include<stdio.h>
    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int main()
    {
        int n,k;
        while(scanf("%d%d",&n,&k),n||k)
        {
            int a=0,b=2*2520,i;
            for(i=1;i<=n/k;i++)a+=k*2520/i;
            int t=gcd(a,b);
            printf("%d/%d
    ",a/t,b/t);
        }
    }

    分数加法的做法

    #include<stdio.h>
    int a,b;
    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int d()
    {
        int t=gcd(a,b);
        a/=t,b/=t;
    }
    int main()
    {
        int n,m,i;
        while(~scanf("%d%d",&n,&m),n,m)
        {
            a=m,b=2;
            for(i=2; i<=n/m; ++i)a=2*a*i+m*b,b*=2*i,d();
            printf("%d/%d
    ",a,b);
        }
    }
  • 相关阅读:
    性能测试四十五:性能测试策略
    性能测试四十四:性能优化思路
    性能测试四十三:数据库监控的指标
    性能测试四十二:sql案例之联合索引最左前缀
    性能测试四十一:sql案例之慢sql配置、执行计划和索引
    性能测试四十:Mysql存储过程造数据
    性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题
    delphiIDE 把 window 桌面改慢后的 还原方法
    TStringList 善用 value['names'] 即使value 是带=号的值都没有关系呵呵 ,我靠 强,以后就用这个了,key=value首选
    TStringList,快速解析 查找测试。。。很有用,再也不用 FOR 循环了
  • 原文地址:https://www.cnblogs.com/BobHuang/p/9942905.html
Copyright © 2011-2022 走看看