zoukankan      html  css  js  c++  java
  • 【模拟练习】[一]

    1684: 金币


    时间限制: 1 Sec  内存限制: 128 MB
    提交: 143  解决: 97
    [提交][状态][讨论版]

    题目描述

    国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天) ,每天收到两枚金币;之后三天(第四、五、六天) ,每天收到三枚金币;之后四天(第七、八、九、十天) ,每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 N 天每天收到 N 枚金币后,骑士会在之后的连续 N+1 天里,每天收到 N+1 枚金币。

    请计算在前 K 天里,骑士一共获得了多少金币。

    输入

    输入文件名为 coin.in。
    输入文件只有 1 行,包含一个正整数 K,表示发放金币的天数。

    输出

    输出文件名为 coin.out。
    输出文件只有 1 行,包含一个正整数,即骑士收到的金币数。

    样例输入

    6

    样例输出

    14

    提示

    【输入输出样例 1 说明】

    骑士第一天收到一枚金币; 第二天和第三天, 每天收到两枚金币; 第四、 五、 六天,

    每天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币。

    【输入输出样例 2】

    coin.in 

    1000



    coin.out

    29820

    见选手目录下的 coin/coin2.in 和 coin/coin2.ans。

    【数据说明】

    对于 100%的数据,1 ≤ K ≤ 10,000。

    来源

    NOIP2015普及组


    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int n;
    int ans;
    int main()
    {
        cin>>n;
        int tian=1;
        while(n>0)
        {
            n-=tian;
            if(n<0)ans+=tian*(tian+n);
            else ans+=tian*tian;
            tian++;
        }
        cout<<ans;
        puts("");
        return 0;
    }
    View Code

    //ATT:只有等于0才是假 其他都是真的 


    描述

    对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M。

    例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。

    格式

    输入格式

    包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000)

    输出格式

    每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。

    样例1

    样例输入1

    10000
    

    样例输出1

    18 142 
    297 328 
    388 412 
    1998 2002
    

    限制

    1s


    有一点想法的暴力

    利用一下等差数列求和公式owo

    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int m;
    
    int main()
    {
        cin>>m;
        for(int i=1;i<=m/2;++i)
        {
            for(int j=m;j>2/m;--j)
            {
                if((j-i+1)*(j+i)/2==m)
                {
                    cout<<i<<" "<<j;
                    puts("");
                }
            }
        }
        return 0;
    }
    View Code

     以上是m^2的T版做法owo

    判断delta是不是完全平方数 把一个数开根号 取根的整数部分  乘起来 如果还等于原来那个数的话那就是完全平方数 就直接把sqrt出来的值赋给一个int变量就OK了

    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<cmath>
    #define maxn 100005
    using namespace std;
    int m;
    int main()
    {
        cin>>m;
        for(int i=1;i<=m;i++)
        for(int j=i+1;j<=m/i+i;j++)
        if((i+j)*(j-i+1)==2*m)
        {
            printf("%d %d",i,j);    
            puts("");
        }     
        return 0;
    }
    View Code
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<cmath>
    #define maxn 100005
    using namespace std;
    int m;
    long int t,n,i;
    int main()
    {
        cin>>m;
        int t=0;
        for(i=1;i<m;++i)
        {
            if(n<=m)n+=i;
            while(n>m)
            {
                n-=t;
                t++;
                if(n==m)
                {
                    cout<<t<<" "<<i;
                    puts("");
                }
            }
        }      
        return 0;
    }
    View Code

    P1328 生活大爆炸版石头剪刀布

    题目描述

    石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8 集中出现了一种石头剪刀布的升级版游戏。

    升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

    斯波克:《星际迷航》主角之一。

    蜥蜴人:《星际迷航》中的反面角色。

    这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

    现在,小A 和小B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A以“石头 - 布- 石头- 剪刀- 蜥蜴人- 斯波克”长度为6 的周期出拳,那么他的出拳序列就是“石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- 石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- ……”,而如果小B 以“剪刀- 石头- 布- 斯波克- 蜥蜴人”长度为5 的周期出拳,那么他出拳的序列就是“剪刀- 石头- 布- 斯波克- 蜥蜴人- 剪刀- 石头- 布-斯波克- 蜥蜴人- ……”

    已知小A 和小B 一共进行N 次猜拳。每一次赢的人得1 分,输的得0 分;平局两人都得0 分。现请你统计N 次猜拳结束之后两人的得分。

    输入输出格式

    输入格式:

    输入文件名为rps.in。

    第一行包含三个整数:N ,NA,NB,分别表示共进行 N 次猜拳、小 A 出拳的周期长度,小B 出拳的周期长度。数与数之间以一个空格分隔。

    第二行包含NA个整数,表示小 A 出拳的规律,第三行包含NB个整数,表示小 B 出拳的规律。其中,0 表示“剪刀”,1 表示“石头”,2 表示“布”,3 表示“蜥蜴人”, 4 表示“斯波克”。数与数之间以一个空格分隔。

    输出格式:

    输出文件名为rps.out 。

    输出一行, 包含两个整数,以一个空格分隔,分别表示小A 、小B 的得分。

    输入输出样例

    输入样例#1:
    10 5 6
    0 1 2 3 4
    0 3 4 2 1 0
    
    输出样例#1:
    6 2
    
    输入样例#2:
    9 5 5
    0 1 2 3 4
    1 0 3 2 4
    
    输出样例#2:
    4 4

    说明

    对于100%的数据,0 < N ≤ 200 ,0 < NA ≤ 200 , 0 < NB ≤ 200 。



    谕神的密码

    Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
     

    谕神是集训队里面智商数一数二的大神,在他的电脑里储存着他在学习的东西。每天都要通过学习来提高自己的知识水平。然而,作为一个长者,谕神不愿意将自己的学习资料给那些too young, too simple, sometimes naive的人看,以免被他们看了去搞一个大新闻。于是,谕神给自己的电脑设置了密码。

    当然,他设置的密码也要按照基本法。这个基本法是谕神自己搞出来的。法则是这样的:

    1、密码由22个nn位数组成,中间由空格隔开,其中,两个数的各个位的和均为ss

    2、是满足1条件的最小的数和最大的数

    3、当找不到nn位数的和为s的时候,密码就是:-1 -1

    4、谕神保证密码的22个数中没有前导00。

    他这个密码只是为了防止too young, too simple, sometimes naive的人进入电脑的,对于你们这些高智商的人群,破译密码应该并不难吧~~

    注意,单独的00,是合法的哦~

    Input

    先读入一个TT(0T1000≤T≤100),为数据组数

    每组数据只有一行,为nn(0<n1000<n≤100)和ss(0s9000≤s≤900).

    Output

    输出谕神的密码

    Sample input and output

    Sample InputSample Output
    1
    2 15
    69 96

    Hint

    就一组测试数据 22位数各位和为1515的最大值是9696, 最小值是6969.

    Source

    第七届ACM趣味程序设计竞赛第二场(正式赛)

     
     
     

     P2708 硬币翻转

    题目背景

    难度系数:☆☆☆☆☆(如果你看懂了)

    题目描述

    从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的。正面朝上的用1表示,背面朝上的用0表示。现在要求从这行的第一个硬币开始,将n个硬币(1<=n<=硬币个数)一起翻面,问如果要将所有硬币翻到正面朝上,最少要进行这样的操作多少次?

    输入输出格式

    输入格式:

    一个字符串(当然不限长度,在字符串范围之内),有0和1组成

    输出格式:

    要翻转的最少次数

    输入输出样例

    输入样例#1:
    10
    输出样例#1:
    2

    说明

    样例1说明:

    第1次翻转:把第一个硬币翻到反面,字符串为00

    第2次翻转:把第一、二个硬币一起翻到正面,字符串为11,翻转完成,输出2

     
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define maxn 10000
    using namespace std;
    int main()
    {
        string s;
        int ans=0;
        cin>>s;
        int n=s.length();
        for(int i=1;i<n;++i)
        {
            if(s[i]!=s[i-1])++ans;
        }
        if(s[n-1]=='0')++ans;
        cout<<ans;
        puts("");
        return 0;
    }
    View Code
     
     
     
     
     
     
  • 相关阅读:
    关于React的入门级安装和最浅显解释
    Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
    AWS S3 CLI的安装和配置
    用Node完成AWS S3的Upload流程之全世界最简版
    在Web应用中接入微信支付的流程之极简清晰版
    storm metrics
    hadoop 2.2.0 centos 6.4 x64 编译
    如何打造核心竞争力(经验总结)
    mysql event scheduler机制 与 动态表名创建
    hadoop 2.2.0 安装
  • 原文地址:https://www.cnblogs.com/gc812/p/7087411.html
Copyright © 2011-2022 走看看