zoukankan      html  css  js  c++  java
  • 每日10题4

    1561: [蓝桥杯][算法提高VIP]计算质因子

    题目描述
    输入一个整数,输出其所有质因子。

    数据规模和约定
    1< =n< =10000。
    输入
    输入只有一行,包含一个整数n。
    输出
    输出一行,包含若干个整数,为n的所有质因子,按照从小到大的顺序排列。
    样例输入

    6 
    

    样例输出

    2 3
    

    思路

    • 质因子在数论里是指能整除给定正整数的质数。
    • 255的因子有1 、3、5、15、17、51、85、255。其中是质数的是1、3、5、17 所以255的质因子就是1、3、5、17。所以最大质因子是17。55不是255的因子,也不是质数,当然不是255的最大质因子。
    #include<stdio.h>
    int main(){
    	int n,i,m;
    	scanf("%d",&n);
    	for(i=2;i<=n;i++){
    		if(n%i==0){
    			if(m!=i){
    				printf("%d ",i);
    			}
    			m=i;
    			n=n/i;i--;
    		}
    	}
    	return 0;
    }
    

    1569: [蓝桥杯][算法提高VIP]输入输出格式练习

    题目描述
    按格式格式读入一个3位的整数、一个实数、一个字符 。
    并按格式输出 一个整数占8位左对齐、一个实数占8位右对齐、一个字符 ,并用|隔开。
    输入

    输出

    样例输入

    123456.789|a 
    

    样例输出

    123     |   456.8|a
    
    #include<stdio.h>
    int main(){
    	int n;
    	double m;
    	char a;
    	scanf("%3d %lf|%c",&n,&m,&a);
    	printf("%-8d|%8.1lf|%c",n,m,a);
    	return 0;
    }
    

    1570: [蓝桥杯][算法提高VIP]输出九九乘法表

    题目描述
    编制程序,按格式打印九九乘法表。

    注意:表头的大小写要和样例一致,短线“-”个数要与样例中一致,否则系统会判为错误。

    输入

    输出

    样例输入

    样例输出

      Nine-by-nine Multiplication Table
    --------------------------------------
         1   2   3   4   5   6   7   8   9
    --------------------------------------
     1   1
     2   2   4
     3   3   6   9
     4   4   8  12  16
     5   5  10  15  20  25
     6   6  12  18  24  30  36
     7   7  14  21  28  35  42  49
     8   8  16  24  32  40  48  56  64
     9   9  18  27  36  45  54  63  72  81
    --------------------------------------
    

    思路:注意空格

    #include<stdio.h>
    int main(){
    	int i,j;
    	printf("  Nine-by-nine Multiplication Table
    ");
    	printf("--------------------------------------
    ");
    	printf("     1   2   3   4   5   6   7   8   9
    ");
    	printf("--------------------------------------
    ");
    	for(i=1;i<=9;i++){
    		printf(" %d  ",i);
    		for(j=1;j<=i;j++){
    			printf("%2d  ",i*j);
    		}
    		printf("
    ");
    	}
    	printf("--------------------------------------
    ");
    	return 0;
    }
    

    1571: [蓝桥杯][算法提高VIP]输出正反三角形

    题目描述
    使用循环结构打印下述图形,打印行数n由用户输入。图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入。

    注意:两行之间没有空行。
    输入

    输出

    样例输入
    5 4
    样例输出

       *    *********
       ***    *******
      *****    *****
     *******    ***
    *********    *
    
    #include<stdio.h>
    int main(){
    	int i,j,n,m;
    	scanf("%d %d",&n,&m);
    	for(i=0;i<n;i++){
    		for(j=0;j<m+n-i-1;j++){//空格数为m+n-i-1个
    			printf(" ");
    		}
    		for(j=0;j<2*i+1;j++){
    			printf("*");
    		}
    		for(j=0;j<m;j++){
    			printf(" ");
    		}
    		for(j=0;j<2*(n-i)-1;j++){
    			printf("*");
    		}
    		printf("
    ");
    	}
    	return 0;
    }
    

    1579: [蓝桥杯][算法提高VIP]陶陶摘苹果2

    题目描述
    陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
    现在已知n个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度。假设她碰到苹果,苹果就会掉下来。请帮陶陶算一下,经过她的洗劫后,苹果树上还有几个苹果。
    输入
     输入包括两行数据。第一行只包括两个正整数n(5< =n< =200)和m(60< =m< =200),表示苹果数目和桃桃伸手可 达到的高度(以厘米为单位)。第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示苹果到地面的高度,两个相邻的整数 之间用一个空格隔开。
    输出
    输出包括一行,这一行只包含一个整数,表示陶陶不能够摘到的苹果的数目。
    样例输入

    10  110 
    100  200  150  140  129  134  167  198  200  111 
    

    样例输出

    5
    
    #include<stdio.h>
    int main(){
    	int i,n,m,a,count=0;
    	scanf("%d %d",&n,&m);
    	for(i=0;i<n;i++){
    		scanf("%d",&a);
    		if(a>(m+30)){
    			count++;
    		}
    	}
    	printf("%d
    ",count);
    	return 0;
    }
    

    1584: [蓝桥杯][算法训练VIP]判定字符位置

    题目描述
    返回给定字符串s中元音字母的首次出现位置。英语元音字母只有‘a’、‘e’、‘i’、‘o’、‘u’五个。
    若字符串中没有元音字母,则返回0。
    只考虑小写的情况。
    输入

    输出

    样例输入

    and 
    

    样例输出

    1
    
    #include<stdio.h>
    int main(){
    	char a[100];
    	int i;
    	scanf("%s",a);
    	for(i=0;i<strlen(a);i++){
    		if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'){
    			printf("%d",i+1);
    			return 0;
    		}
    	}
    	printf("0
    ");
    	return 0;
    }
    

    1585: [蓝桥杯][算法训练VIP]链表数据求和操作

    题目描述
    读入10个复数,建立对应链表,然后求所有复数的和。
    输入

    输出

    样例输入

    1  2 
    1  3 
    4  5 
    2  3 
    3  1 
    2  1 
    4  2 
    2  2 
    3  3 
    1  1 
    

    样例输出

    23+23i
    
    #include<stdio.h>
    int main(){
    	int a[10],b[10],i,m=0,n=0;
    	for(i=0;i<10;i++){
    		scanf("%d %d",&a[i],&b[i]);
    		m=m+a[i];
    		n=n+b[i];
    	}
    	if(m==0){
    		if(n==0)	printf("0");
    		else	printf("%di",n);
    	}else if(n==0)	printf("%d",m);
    	else if(n>0)	printf("%d+%di",m,n);
    	else	printf("%d%di",m,n);
    	return 0;
    }
    

    1586: [蓝桥杯][算法训练VIP]A+B problem

    题目描述

    • Given two integers A and B, your task is to output their sum, A+B.

    输入

    • The input contains of only one line, consisting of two integers A and B. (0 ≤ A,B ≤ 1 000)

    输出

    • The output should contain only one number that is A+B.

    样例输入

    1  1 
    

    样例输出

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

    1635: [蓝桥杯][算法训练VIP]整数平均值

    题目描述
    编写函数,求包含n个元素的整数数组中元素的平均值。要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值。

    (样例说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)

    输入

    输出

    样例输入

    5  
    3  4  0  0  2 
    

    样例输出

    1
    
    #include<stdio.h>
    int main(){
    	int a,i,sum=0;
    	scanf("%d",&a);
    	int b[a];
    	for(i=0;i<a;i++){
    		scanf("%d",&b[i]);
    		sum=sum+b[i];
    	}
    	printf("%d",sum/a);
    	return 0;
    }
    

    1636: [蓝桥杯][算法训练VIP]整除问题

    题目描述
    编写一个程序,输入三个正整数min、max和factor,然后对于min到max之间的每一个整数(包括min和max),如果它能被factor整除,就把它打印出来。
    输入
    输入只有一行,包括三个整数min、max和factor。
    输出
    输出只有一行,包括若干个整数。
    样例输入

    1  10  3 
    

    样例输出

    3 6 9
    
    #include<stdio.h>
    int main(){
    	int a,b,c,i;
    	scanf("%d %d %d",&a,&b,&c);
    	for(i=a;i<=b;i++){
    		if(i%c==0){
    			printf("%d ",i);
    		}
    	}
    	return 0;
    }
    

    1804: [蓝桥杯][算法提高] c++_ch02_02

    题目描述
    使用Switch语句编写一个模拟简单计算器的程序。依次输入两个整数和一个字符,并用空格隔开。如果该字 符是一个“+”,则打印和;如果该字符是一个“-”,则打印差;如果该字符是一个“*”,则打印积;如果该字符是“/”,则打印商;如果该字符是一个 “%”,则打印余数。打印结果后输出一个空行。
    输入
    3 4 +
    输出
    7

    样例输入

    3 4 +
    

    样例输出

    7
    
    #include<stdio.h>
    int main(){
    	int a,b;
    	char c;
    	scanf("%d %d %c",&a,&b,&c);
    	switch(c){
    		case '+':printf("%d
    ",a+b);break;
    		case '-':printf("%d
    ",a-b);break;
    		case '*':printf("%d
    ",a*b);break;
    		case '/':printf("%d
    ",a/b);break;
    		case '%':printf("%d
    ",a%b);break;
    		default:break;
    	}
    	return 0;
    }
    

    1805: [蓝桥杯][算法提高] c++_ch02_03

    题目描述
    编写程序实现“剪刀,石头,布”游戏。在这个游戏中,两个人同时说“剪刀”,“石头”或“布”,压过另一方的为胜者。规则是:“布”胜过“石头”,“石头”胜过“剪刀”,“剪刀”胜过“布”。要求:选择结构中使用枚举类型,结果的输出也使用枚举类型表示。
    输入:两个数,范围为{0,1,2},用空格隔开。0表示石头,1表示布,2表示剪刀。这两个数分别表示两个人所说的物品。
    输出:如果前者赢,输出1。如果后者赢,输出-1。如果是平局,输出0。
    输入
    两个数,范围为{0,1,2},用空格隔开。0表示石头,1表示布,2表示剪刀。这两个数分别表示两个人所说的物品。

    输出
    如果前者赢,输出1。如果后者赢,输出-1。如果是平局,输出0。

    样例输入

    0 2
    

    样例输出

    1
    
    #include<stdio.h>
    int main(){
    	int a,b;
    	scanf("%d %d",&a,&b);
    	if(a==b){
    		printf("0");
    	}else if((a==0&&b==2)||(a==2&&b==1)||(a==1&&b==0)){
    		printf("1");
    	}else{
    		printf("-1");
    	}
    	return 0;
    }
    

    1813: [蓝桥杯][算法提高] c++_ch03_02

    题目描述
    PASCAL三角是形状如下的三角矩阵:
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    在PASCAL三角中的每个数是一个组合C(n,k)。
    C(n,k)=(((((((n/1)(n-1))/2(n-2))/3)***(n-k+2))/(k-1))(n-k+1))/k
    公式中交替使用乘法和除法,每次将从n开始递减的一个值相乘,然后除以下一个从1开始递增的值。
    如果对行和列从0开始计数,则数字C(n,k)在n行k列。例如C(6,2)在第6行第2列。编程输出指定阶数的PASCAL三角矩阵。例如下面给出的是12阶PASCAL三角形矩阵。

    编写程序,使运行结果为:

    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    1 6 15 20 15 6 1
    1 7 21 35 35 21 7 1
    1 8 28 56 70 56 28 8 1
    1 9 36 84 126 126 84 36 9 1
    1 10 45 120 210 252 210 120 45 10 1
    1 11 55 165 330 462 462 330 165 55 11 1
    1 12 66 220 495 792 924 792 495 220 66 12 1
    

    输入

    输出

    样例输入

    3
    

    样例输出

               1   
            1     1   
         1     2     1   
      1     3     3     1   
    
    #include <stdio.h>
    int main(){
    	int a,i,j;
    	int num[15][15]={0};
    	scanf("%d",&a);
    	for(i=0;i<=a;i++)//把第一列和对角线列赋值为1 
    		num[i][0]=num[i][i]=1;
    	for(i=2;i<=a;i++){//赋值其他列,注意行下标从2开始 
    		for(j=1;j<i;j++){
    			num[i][j]=num[i-1][j-1]+num[i-1][j];
    		}
    	}
    	for(i=0;i<=a;i++){//输出杨辉三角形 
    		for(j=0;j<a-i;j++){
    			printf("   ");//输出前面的空格3个 
    		}
    		for(j=0;j<=i;j++){
    			printf("%3d   ",num[i][j]);
    		}
    		printf("
    ");
    	} 
    	return 0;
    }
    

    1853: [蓝桥杯][基础练习]数列排序

    题目描述
    给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

    输入
    第一行为一个整数n。
    第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

    输出
    输出一行,按从小到大的顺序输出排序后的数列。
    样例输入

    5
    8 3 6 4 9
    

    样例输出

    3 4 6 8 9
    
    #include <stdio.h>
    int cmp(const void *a,const void *b){//自定义函数
        return *(int*)a - *(int*)b;
    }
    int main(){
        int n,a[100],i;
        scanf("%d",&n);
        for(i=0;i<n;i++){//读入每个值
            scanf("%d",&a[i]);
        }
        qsort(a,i,sizeof(a[0]),cmp);//调用函数
        for(i=0;i<n;i++){//输出每个值
            printf("%d ",a[i]);
        }
        return 0;
    }
    

    1915: [蓝桥杯][算法提高VIP]三个整数的排序

    题目描述
    输入三个数,比较其大小,并从大到小输出。

    输入
    一行三个整数。

    输出
    一行三个整数,从大到小排序。

    样例输入

    33 88 77
    

    样例输出

    88 77 33
    
    #include <stdio.h>
    int cmp(const void *a,const void *b){
    	return *(int*)b - *(int*)a;
    }
    int main(){
    	int a[100],i;
    	for(i=0;i<3;i++){
    		scanf("%d",&a[i]);
    	}
    	qsort(a,i,sizeof(a[0]),cmp);
    	for(i=0;i<3;i++){
    		printf("%d ",a[i]);
    	}
    	return 0;
    }
    

    1933: [蓝桥杯][算法提高VIP]约数个数

    题目描述
    输入一个正整数N,输出N的约数个数
    输入
    12
    输出
    6
    样例输入

    样例输出

    提示

    • 12的约数包括:1,2,3,4,6,12。共6个
    #include <stdio.h>
    int main(){
    	int a,i,n=0;
    	scanf("%d",&a);
    	for(i=1;i<=a;i++){
    		if(a%i==0){//能被a整除的数,即为约数
    			n++;
    		}
    	}
    	printf("%d",n);
    	return 0;
    }
    

    2194: [蓝桥杯][2018年第九届真题]递增三元组

    题目描述
    给定三个整数数组
    A = [A1, A2, … AN],
    B = [B1, B2, … BN],
    C = [C1, C2, … CN],
    请你统计有多少个三元组(i, j, k) 满足:

    1. 1 <= i, j, k <= N
    2. Ai < Bj < Ck

    输入

    • 第一行包含一个整数N。 第二行包含N个整数A1, A2, … AN。 第三行包含N个整数B1, B2, … BN。 第四行包含N个整数C1, C2, … CN。

    提示

    • 对于30%的数据,1 <= N <= 100
    • 对于60%的数据,1 <= N <= 1000
    • 对于100%的数据,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000

    输出
    一个整数表示答案
    样例输入

    3
    1 1 1
    2 2 2
    3 3 3
    

    样例输出

    27
    
    #include<stdio.h>
    int cmp(const void *a,const void *b){
    	return *(int*)a - *(int*)b;
    }
    int main(){
        int a[1000],b[1000],c[1000];
        int t[1000]={0};
        int n,i,j,k,count=0;
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        for(i=0;i<n;i++){
            scanf("%d",&b[i]);
        }
        for(i=0;i<n;i++){
            scanf("%d",&c[i]);
        }
        qsort(a,i,sizeof(a[0]),cmp);
        qsort(b,i,sizeof(b[0]),cmp);
        qsort(c,i,sizeof(c[0]),cmp);
        i=n-1,j=n-1;
        while(i>=0&&j>=0){//数组a与数组b进行比较,此法为线性比较 
    		if(b[j]>a[i]){//b[j]如果大于a[i] ,则b[j]大于a[i]前边的所有数 
    			t[j]=i+1;//所以个数为i+1(i从0开始的) 
    			j--;//b往前移 
    		}else
    			i--;//a往前移 
    	}
    	i=0;j=0;
    	while(i<=n-1&&j<=n-1){//数组b与数组c进行比较,此法为线性比较 
    		if(c[j]>b[i]){//c[j]如果大于b[i] ,则c[j]后边的所有数都大于b[i]
    			count=count+t[i]*(n-j);
    			i++;//b往后移 
    		}else
    			j++;//c往后移 	
    	}
        printf("%d
    ",count);
        return 0;
    } 
    
    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN = 100005;
    int a[MAXN],b[MAXN],c[MAXN];
    int n,sum;
    
    int main(){
      cin>>n;
      for(int i=0;i<n;i++)scanf("%d",&a[i]);
      for(int i=0;i<n;i++)scanf("%d",&b[i]);
      for(int i=0;i<n;i++)scanf("%d",&c[i]);
      sort(a,a+n);
      sort(b,b+n);
      sort(c,c+n);
      sum = 0;
      for(int i=0;i<n;i++){
        int x = (lower_bound(a,a+n,b[i]) - a);
        int y = (n - (upper_bound(c,c+n,b[i]) - c));
        sum += x*y;
      }
      cout<<sum;
      return 0;
    }
    
    
    欢迎查阅
  • 相关阅读:
    shell 命令参数
    Windows系统配置Python环境,python2和python3共存
    jmeter面试题及答案
    接口测试
    python语法基础
    pycharm环境安装及注册
    Win10下python 2.7与python 3.6双环境安装图文教程
    eclipse中导入maven项目时pom文件报错
    ssm-crud项目--总结
    ssm-crud项目——分页查询
  • 原文地址:https://www.cnblogs.com/gh110/p/12158134.html
Copyright © 2011-2022 走看看