• 洛谷刷题C语言:梦中的统计、统计天数、语句解析、爱与愁的心痛、西游记公司


    记录洛谷刷题QAQ


    一、梦中的统计

    题目背景

    Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。

    题目描述

    Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码( 0 … 9 0 \ldots 9 09):每一个数码在计数的过程中出现过多少次?

    给出两个整数 M M M N N N,求每一个数码出现了多少次。

    输入格式

    1 1 1 行: 两个用空格分开的整数 M M M N N N

    输出格式

    1 1 1 行: 十个用空格分开的整数,分别表示数码 0 … 9 0 \ldots 9 09 在序列中出现的次数。

    样例 #1

    样例输入 #1

    129 137
    
    • 1

    样例输出 #1

    1 10 2 9 1 1 1 1 0 1
    
    • 1

    提示

    数据保证, 1 ≤ M ≤ N ≤ 2 × 1 0 9 1 \leq M \leq N \leq 2 \times 10^9 1MN2×109 N − M ≤ 5 × 1 0 5 N-M \leq 5 \times 10^5 NM5×105

    代码如下

     
    #include
    #include
    #include 
    
    int main(){
    	int i,n1,n2,b;
    	int a[10]={0};
    	scanf("%d %d",&n1,&n2);
    	for(i=n1;i<=n2;i++){
    		int num=i;
    		while(num>0){
    			b=num%10;
    			num=num/10;
    			a[b]++;
    		}
    	}
    	for(i=0;i<10;i++){
    		printf("%d ",a[i]);
    	}
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    二、统计天数

    题目描述

    炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。

    经历千辛万苦,他收集了连续 N ( 1 ≤ N ≤ 1 0 6 ) N(1 \leq N \leq 10^6) N(1N106) 的最高气温数据。

    现在,他想知道最高气温一直上升的最长连续天数。

    输入格式

    第 1 行:一个整数 N N N 1 ≤ N ≤ 1 0 6 1 \leq N \leq 10^6 1N106

    第 2 行: N N N个空格隔开的整数,表示连续 N N N 天的最高气温。 0 ≤ 0 \leq 0 最高气温 ≤ 1 0 9 \leq 10^9 109

    输出格式

    1 行:一个整数,表示最高气温一直上升的最长连续天数。

    样例 #1

    样例输入 #1

    10
    1 2 3 2 4 5 6 8 5 9
    
    • 1
    • 2

    样例输出 #1

    5
    
    • 1

    代码如下

    #include
    int main(){
        int n,i,sum=1,count=1;
        scanf("%d",&n);
        int a[n];
        for(i=0;i<n;i++)
        	scanf("%d",&a[i]);
        for(i=0;i<n-1;i++)
        {
           if(a[i+1]>a[i])
           {
               count++;    //count记录每次最长的温度升高
               if(count>sum)    //sum为最大的
                   sum=count;
            }
           else 
              count=1;
    
        }
        printf("%d",sum);
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    三、语句解析

    题目背景

    木有背景……

    题目描述

    一串长度不超过 255 255 255 的 PASCAL 语言代码,只有 a , b , c a,b,c a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];。未赋值的变量值为 0 0 0 输出 a , b , c a,b,c a,b,c 的值。

    输入格式

    一串符合语法的 PASCAL 语言,只有 a , b , c a,b,c a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 0 0 0

    输出格式

    输出 a , b , c a,b,c a,b,c 最终的值。

    样例 #1

    样例输入 #1

    a:=3;b:=4;c:=5;
    
    • 1

    样例输出 #1

    3 4 5
    
    • 1

    提示

    输入的 PASCAL 语言长度不超过 255 255 255

    代码如下

    #include 
    #include 
    
    #include 
     
    int main()
    {
        int a = 0, b = 0, c = 0;
        char s[300];
        scanf("%s", s);
        int len = strlen(s);
        for(int i = 0; i < len; i+=5)
        {
            if(s[i] == 'a')
            {
                if(s[i+3] == 'a')
                    a = a;
                else if(s[i+3] == 'b')
                    a = b;
                else if(s[i+3] == 'c')
                    a = c;
                else
                    a = s[i+3] - '0';
            }
            if(s[i] == 'b')
            {
                if(s[i+3] == 'a')
                    b = a;
                else if(s[i+3] == 'b')
                    b = b;
                else if(s[i+3] == 'c')
                    b = c;
                else
                    b = s[i+3] - '0';
            }
            if(s[i] == 'c')
            {
                if(s[i+3] == 'a')
                    c = a;
                else if(s[i+3] == 'b')
                    c = b;
                else if(s[i+3] == 'c')
                    c = c;
                else
                    c = s[i+3] - '0';
            }
        }
        printf("%d %d %d\n", a, b, c);
     
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    四、爱与愁的心痛

    题目背景

    (本道题目隐藏了两首歌名,找找看哪~~~)

    《爱与愁的故事第一弹·heartache》第一章。

    《我为歌狂》当中伍思凯神曲《舞月光》居然没赢给萨顶顶,爱与愁大神心痛啊~~~而且最近还有一些令人伤心的事情,都让人心痛(最近真的很烦哈)……

    题目描述

    最近有 n n n 个不爽的事,每句话都有一个正整数刺痛值(心理承受力极差)。爱与愁大神想知道连续 m m m 个刺痛值的和的最小值是多少,但是由于业务繁忙,爱与愁大神只好请你编个程序告诉他。

    输入格式

    第一行有两个用空格隔开的整数,分别代表 n n n m m m

    2 2 2 到第 ( n + 1 ) (n + 1) (n+1) 行,每行一个整数,第 ( i + 1 ) (i + 1) (i+1) 行的整数 a i a_i ai 代表第 i i i 件事的刺痛值 a i a_i ai

    输出格式

    输出一行一个整数,表示连续 m m m 个刺痛值的和的最小值是多少。

    样例 #1

    样例输入 #1

    8 3
    1
    4
    7
    3
    1
    2
    4
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    样例输出 #1

    6
    
    • 1

    提示

    数据规模与约定

    • 对于 30 % 30\% 30% 的数据,保证 n ≤ 20 n \leq 20 n20
    • 对于 60 % 60\% 60% 的数据,保证 n ≤ 100 n \leq 100 n100
    • 对于 90 % 90\% 90% 的数据,保证 n ≤ 1 0 3 n \leq 10^3 n103
    • 对于 100 % 100\% 100% 的数据,保证 0 ≤ m ≤ n ≤ 3 × 1 0 3 0 \leq m \leq n \leq 3 \times 10^3 0mn3×103 1 ≤ a i ≤ 100 1 \leq a_i \leq 100 1ai100

    代码如下

    
    #include 
    #include 
    #define M 300000
    int main(int argc, char *argv[]) {
    	int n, m;
    	scanf("%d%d",&n,&m);
    		int NUM[M];
    		int i, j;
    		for(i = 0;i < n;i++){
    			scanf("%d",&NUM[i]); 
    		} 
    		long long int sum = 0, all = 1000000;
    		for(i = 0;i < n-m+1;i++){
    			for(j = i;j < m+i;j++){
    				sum  = NUM[j] + sum;
    				}
    				if(sum < all){
    					all = sum;	
    			}
    			sum = 0;
    		}
    		printf("%lld",all); 
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    五、西游记公司

    题目背景

    一道极其无厘头的题目

    题目描述

    事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了。然后,他们创办了三个公司——“花果山生态旅游山庄集团公司”“高老庄猪肉美食城有限公司”“流沙河轮渡有限公司”。虽然这三家公司出自“经卷出版社”社长唐三藏的徒弟们,但是仍然保持着0元以下的财政收入。于是,他们想到了一个无聊的方法——向别人偷!是这样的:如果猪八戒知道孙悟空要偷猪八戒的平底锅,猪八戒就不能去抢沙和尚的保时捷。现在,作为猪八戒手下首席智士(智障人士)的你,要帮助既聪明又愚蠢的猪八戒用那种不正当的手段挽救这个公司!你可以这样做:你已经知道孙悟空什么时候要来偷猪八戒的东西,而猪八戒又要在什么时间去抢沙和尚的东西,又知道猪八戒每秒钟可以偷沙和尚1台笔记本电脑,帮猪八戒算一算,自己在有限的时间内能偷到沙和尚多少台电脑,使得他有足够的时间来防御大师兄。

    输入格式

    第一行:时:分:秒(表示猪八戒打算去偷沙和尚笔记本电脑的时间)

    第二行:时:分:秒(表示孙悟空打算去偷猪八戒平底锅的时间)

    注:时间可能有前导0,也有可能没有。

    第三行:猪八戒每秒可以偷沙和尚几台笔记本电脑

    确保第一行的时间要比第二行的时间来得早。

    输出格式

    一个整数,有可能大于int(2^31-2),表示猪八戒能偷沙和尚笔记本的个数

    样例 #1

    样例输入 #1

    00:0:00
    0:00:10
    10
    
    • 1
    • 2
    • 3

    样例输出 #1

    100
    
    • 1

    提示

    数据范围:

    00:00:00到23:59:59

    数量<=32767

    代码如下:

     
    #include
    #include
    #include 
    
    int main(){
    	int a1, a2, a3;
    	int b1, b2, b3;
    	int n;
    	scanf("%d:%d:%d",&a1,&a2,&a3);
    	scanf("%d:%d:%d",&b1,&b2,&b3);
    	scanf("%d",&n);	
    	
    	long long num = 0;
    	num = b1*3600+b2*60+b3 - a1*3600 - a2*60 - a3;
    	num = num*n;
    	
    	printf("%lld\n",num);
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    JDY-31蓝牙模块(四针头)与USB转串口模块的连接和JDY-31蓝牙模块与手机蓝牙调试器频繁断开问题
    PHP 员工工资管理系统mysql数据库web结构apache计算机软件工程网页wamp
    如何从存档服务器上完全删除PDM用户
    vsto转换为windows服务 并部署服务
    免费的百度官网认证怎么搞?什么单位官网认证免费?
    如何在Windows 10/11中重置网络,以及重置后的注意事项有哪些
    Spring Cloud Alibaba-OpenFign实现服务调用
    张大哥笔记:普通人如何搞钱?
    【数据仓库基础(二)】数据仓库架构
    Netty实践 -- Netty处理粘包拆包
  • 原文地址:https://blog.csdn.net/weixin_62529383/article/details/125900189