• 洛谷刷题C语言:数字统计、你的飞碟在这儿、哥德巴赫猜想、数字翻转、低洼地


    纪录洛谷刷题QAQ


    一、[NOIP2010 普及组] 数字统计

    题目描述

    请统计某个给定范围 [ L , R ] [L, R] [L,R]的所有整数中,数字 2 2 2 出现的次数。

    比如给定范围 [ 2 , 22 ] [2, 22] [2,22],数字$ 2$ 在数 $2 $中出现了 1 1 1 次,在数$ 12$ 中出现 1 1 1 次,在数 20 20 20 中出现 $1 $次,在数 21 中出现 1 1 1 次,在数 22 22 22 中出现 $2 次,所以数字 次,所以数字 次,所以数字 2$ 在该范围内一共出现了 6 6 6次。

    输入格式

    2 2 2个正整数 L L L R R R,之间用一个空格隔开。

    输出格式

    数字 $2 $出现的次数。

    样例 #1

    样例输入 #1

    2 22
    
    • 1

    样例输出 #1

    6
    
    • 1

    样例 #2

    样例输入 #2

    2 100
    
    • 1

    样例输出 #2

    20
    
    • 1

    提示

    1 ≤ L ≤ R ≤ 100000 1 ≤ L ≤R≤ 100000 1LR100000

    代码如下

    #include 
    #include 
    #include 
    
     
    int main() {
    	int n, m;
    	scanf("%d%d",&n,&m);
    	int i, num, sum = 0;
    	for(i = n;i <= m;i++){
    		int point = i;
    		while(point != 0){
    			num = point%10;
    			if(num == 2){
    				sum++;
    			}
    			point = point/10;;
    		}
    	} 
    	printf("%d\n",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

    二、[USACO1.1]你的飞碟在这儿Your Ride Is Here

    题目描述

    众所周知,在每一个彗星后都有一只 UFO。这些 UFO 时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为每个彗星起了一个名字,通过这些名字来决定这个小组是不是被带走的那个特定的小组(你认为是谁给这些彗星取的名字呢?)。关于如何搭配的细节会在下面告诉你;你的任务是写一个程序,通过小组名和彗星名来决定这个小组是否能被那颗彗星后面的 UFO 带走。

    小组名和彗星名都以下列方式转换成一个数字:最终的数字就是名字中所有字母的积,其中 A \texttt A A 1 1 1KaTeX parse error: Undefined control sequence: \textttZ at position 1: \̲t̲e̲x̲t̲t̲t̲Z̲ 26 26 26。例如, USACO \texttt{USACO} USACO 小组就是 21 × 19 × 1 × 3 × 15 = 17955 21 \times 19 \times 1 \times 3 \times 15=17955 21×19×1×3×15=17955。如果小组的数字   m o d   47 \bmod 47 mod47 等于彗星的数字   m o d   47 \bmod 47 mod47,你就得告诉这个小组需要准备好被带走!(记住“ a   m o d   b a \bmod b amodb”是 a a a 除以 b b b 的余数,例如 34   m o d   10 34 \bmod 10 34mod10 等于 4 4 4

    写出一个程序,读入彗星名和小组名并算出用上面的方案能否将两个名字搭配起来,如果能搭配,就输出 GO,否则输出 STAY。小组名和彗星名均是没有空格或标点的一串大写字母(不超过 6 6 6 个字母)。

    输入格式

    第1行:一个长度为 1 1 1 6 6 6 的大写字母串,表示彗星的名字。

    第2行:一个长度为 1 1 1 6 6 6 的大写字母串,表示队伍的名字。

    输出格式

    样例 #1

    样例输入 #1

    COMETQ
    HVNGAT
    
    • 1
    • 2

    样例输出 #1

    GO
    
    • 1

    样例 #2

    样例输入 #2

    ABSTAR
    USACO
    
    • 1
    • 2

    样例输出 #2

    STAY
    
    • 1

    提示

    题目翻译来自 NOCOW。

    USACO Training Section 1.1

    代码如下

    #include 
    #include 
    #include 
    #include 
    int main()
    {
        char name1[6];//小组名
        char name2[6];//彗星名
        char jm[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        int num = 1;//彗星总数
        int num1 = 1;//小组的总数
        int i,j;
        int n,m;
        //puts(jm);
        scanf("%s",name2);
        fflush(stdin);
    
        scanf("%s",name1);
         fflush(stdin);
    
        //遍历比较计算彗星的值
    
        for(i = 0;i < strlen(name2);i ++)
        {
            for(j = 0;j < 26;j ++)
            {
                if(name2[i] == jm[j])
                {
                   num = num * (j + 1);
                }
            
    
            }
    
        }
        n = num % 47;
    
         //遍历比较计算小组的值
        for(i = 0;i < strlen(name1);i ++)
        {
            for(j = 0;j < 26;j ++)
            {
                if(name1[i] == jm[j])
                {
                   num1 = num1 * (j + 1);
                }
                    //printf("%d\n",num1);
            }
    
        }
        m = num1 % 47;
    
    
    
        if(n == m)
        {
            printf("GO");
    
        }
        else
        {
            printf("STAY");
        }
        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
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    三、哥德巴赫猜想

    题目描述

    输入一个偶数 N N N,验证 4 ∼ N 4\sim N 4N 所有偶数是否符合哥德巴赫猜想:任一大于 2 2 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10 10 10 10 = 3 + 7 = 5 + 5 10=3+7=5+5 10=3+7=5+5,则 10 = 5 + 5 10=5+5 10=5+5 是错误答案。

    输入格式

    第一行输入一个正偶数 N N N

    输出格式

    输出 N − 2 2 \dfrac{N-2}{2} 2N2 行。对于第 i i i 行:

    首先先输出正偶数 2 i + 2 2i+2 2i+2,然后输出等号,再输出加和为 2 i + 2 2i+2 2i+2 且第一个加数最小的两个质数,以加号隔开。

    样例 #1

    样例输入 #1

    10
    
    • 1

    样例输出 #1

    4=2+2
    6=3+3
    8=3+5
    10=3+7
    
    • 1
    • 2
    • 3
    • 4

    提示

    数据保证,$ 4 \leq N\leq10000$。

    代码如下

     
    #include
    #include
    
    
    //验证是否是质数的函数
    
    int  ZHISHU(int n)
    {
    	int a = 0;
    	for(int i = 2;i <= n-1;i++){
    		if(n % i == 0){
    			a++;
    		}
    	}
    	
    	if(a == 0)
    	{
    		return 1;
    	}else{
    		return 0;
    	}
     } 
    int main()
    {
    	int N;//N是一个偶数
    	scanf("%d",&N);
    	
    	for(int i = 4;i <= N;i=i+2){
    //		printf("%d ",i);
    		
    		printf("%d",i);
    		printf("=");
    		
    		for(int j = 2;j < i;j++)
    		{
    			int left = i-j;
    			if(ZHISHU(left)==1&&ZHISHU(j)==1){
    				printf("%d",j);
    				printf("+");
    				printf("%d",left);
    				break;
    			}
    		}
    		
    		printf("\n");
    	} 
    	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

    四、[NOIP2011 普及组] 数字反转

    题目描述

    给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

    输入格式

    一个整数 N N N

    输出格式

    一个整数,表示反转后的新数。

    样例 #1

    样例输入 #1

    123
    
    • 1

    样例输出 #1

    321
    
    • 1

    样例 #2

    样例输入 #2

    -380
    
    • 1

    样例输出 #2

    -83
    
    • 1

    提示

    【数据范围】

    $-1,000,000,000\leq N\leq 1,000,000,000 $。

    noip2011 普及组第一题

    代码如下

    #include 
    #include 
    
    
    
    int main(int argc, char *argv[]) {
    	int n;
    	while(scanf("%d",&n)!=EOF){
    	int m = 0, a;
    		while(1){
    			a = n%10;
    			m = m*10 + a;
    			n = n/10; 
    			if( n == 0){
    				break;
    			}
    		}
    		printf("%d\n",m);
    	} 
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    五、低洼地

    题目描述

    一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?

    如图:地高变化为 0 1 0 2 1 2 0 0 2 0

    输入格式

    两行,第一行n,表示有n个数。第2行连续n个数表示地平线高度变化的数据,保证首尾为0。(3<=n<=10000,0<=高度<=1000)

    输出格式

    一个数,可能积水低洼地的数目。

    样例 #1

    样例输入 #1

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

    样例输出 #1

    3
    
    • 1

    代码如下

     
    #include
    #include
    
    int main(){
    	int n;//表示有n个数
    	scanf("%d",&n);
    	
    	int num[n];
    	for(int i = 0;i < n;i++)
    	{
    		scanf("%d",&num[i]);
    	} 
    	
    	
    	int start,tmp;
    	int ans = 0 ;
    	for(int i = 1;i < n;i++)
    	{
    		if(num[i-1]>num[i])
    		{
    			start = 1;
    			tmp = num[i];
    		}
    		if(tmp < num[i]&& start == 1){
    			start = 0;
    			tmp = 0;
    			ans++;
    		}
    	}
    	
    	printf("%d\n",ans);
    	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
  • 相关阅读:
    Spring Boot 框架知识汇总
    推进数据要素化,数据云为何是“加速器”?
    题目地址(04.06. 后继者)
    什么是PolarDB
    Android系统启动流程概览
    idea配置Tomcat时没有Artifacts选项
    Redis
    excel FORMULA
    Nginx
    Docker常见操作
  • 原文地址:https://blog.csdn.net/weixin_62529383/article/details/125895508