算法-蓝桥杯习题(4-3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/RodeStillFaraway/article/details/52048175

蓝桥杯习题

蓝桥杯练习系统习题加答案,总共分为6部分,90%习题使用C语言解答,部分使用C++或者Java。大部分习题为搜索参考或者别人提供所得,不足之处在所难免,恳请批评指正(预计200多题,习题仅供学习交流)

目录

入门训练(详见 算法-蓝桥杯习题(1-1)Go

基础练习(详见 算法-蓝桥杯习题(2-1)Go

基础练习(详见 算法-蓝桥杯习题(2-2)Go

算法训练(详见 算法-蓝桥杯习题(3-1)Go

算法训练(详见 算法-蓝桥杯习题(3-2)Go

算法训练(详见 算法-蓝桥杯习题(3-3)Go

算法训练(详见 算法-蓝桥杯习题(3-4)Go

算法训练(详见 算法-蓝桥杯习题(3-5)Go

算法训练(详见 算法-蓝桥杯习题(3-6)Go

算法提高(详见 算法-蓝桥杯习题(4-1)Go

算法提高(详见 算法-蓝桥杯习题(4-2)Go

算法提高(详见 算法-蓝桥杯习题(4-3)Go

历届试题(详见 算法-蓝桥杯习题(5-1)Go

历届试题(详见 算法-蓝桥杯习题(5-2)Go

蓝桥杯练习系统评测数据

链接: https://pan.baidu.com/s/1brjjmwv
密码: iieq


10

/*
算法提高 多项式输出
*/
//多项式输出
#include<stdio.h>
int main()
{
	int n,a[101],i;
	
	scanf("%d",&n);
	
	for(i=n;i>=0;i--)
		scanf("%d",&a[i]);
	
	for(i=n;i>=0;i--)
	{
		if(i==n)  //指数为首位
		{
			//系数大于0且等于1
			if(a[i]>0 && a[i]!=1)
				printf("%dx^%d",a[i],i);
			//系数大于0且等于1
            if(a[i]>0 && a[i]==1)
				printf("x^%d",i);
			//系数小于0且不等于-1
			if(a[i]<0 && a[i]!=-1)
				printf("%dx^%d",a[i],i);
			//系数小于0且等于-1
			if(a[i]<0 && a[i]==-1)
				printf("-x^%d",i);
		}
		
		else if(i>1 && i!=n)  //指数不为0 且不为首位
		{
			//系数大于0且不等于1
			if(a[i]>0 && a[i]!=1)
				printf("+%dx^%d",a[i],i);
			//系数大于0同时等于1
			if (a[i]>0 && a[i]==1)
                printf("+x^%d",i);
			//系数小于0且不等于-1
			if(a[i]<0 && a[i]!=-1)
				printf("%dx^%d",a[i],i);
			//系数小于0同时等于-1
			if(a[i]<0 && a[i]==-1)
				printf("-x^%d",i);
		}
		else if(i==1)
		{
			//系数大于0且不等于1
			if(a[i]>0 && a[i]!=1)
				printf("+%dx",a[i]);
			//系数大于0同时等于1
			if (a[i]>0 && a[i]==1)
                printf("+x");
			//系数小于0且不等于-1
			if(a[i]<0 && a[i]!=-1)
				printf("%dx",a[i]);
			//系数小于0同时等于-1
			if(a[i]<0 && a[i]==-1)
				printf("-x");
		}
		
		else  //指数为0
		{
			if(a[i]>0)
				printf("+%d\n",a[0]);
			else if(a[i]<0)
			    printf("%d\n",a[0]);
		}
	}
	printf("\n");
	return 0;
}


/*
算法提高 矩阵乘方
*/
#include <stdio.h>
int b, m;
int a[2][2], ans[2][2], temp[2][2] = {1,1,1,1};
void play()
{
    int cnt, cnt2;
    for(cnt = 0; cnt < 2; ++cnt)
    {
        for(cnt2 = 0; cnt2 < 2; ++cnt2)
        {
            printf("%d ", ans[cnt][cnt2]);
        }       
        printf("\n");
    }   
}
void cp(int arr1[][2], int arr2[][2])
{
    int cnt, cnt2;
    
    for(cnt = 0; cnt < 2 ;++cnt)
        for(cnt2 = 0; cnt2 < 2; ++cnt2)
            arr1[cnt][cnt2] = arr2[cnt][cnt2];
}
void mod(int arr[][2])
{
    int cnt, cnt2;
    
    for(cnt = 0; cnt < 2; ++cnt)
        for(cnt2 = 0; cnt2 < 2; ++cnt2)
            arr[cnt][cnt2] %= m;
}
void fun2(int a[][2], int b[][2])
{
    int cnt, cnt2;
    
    temp[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];
    temp[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];
    temp[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];
    temp[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];
}
void fun(int arr[][2], int k)
{
    int cnt;
    
    if(k == 0)
    {
        mod(temp);
        cp(ans, temp);
        return;
    }
    
    if(k == 1)
    {
        mod(ans);
        
        return;
    }
    if(k == 2)
    {
        fun2(a, a);
        cp(ans, temp);
    //  printf("2\n");
    //  play();
        mod(ans);
        return;
    }
    if(k%2 == 0)
    {
        fun(arr, k/2);
        fun2(ans, ans);
        cp(ans, temp);
        //printf("=0\n");
        //play();
        
        mod(ans);
        return;
    }
    if(k%2 != 0)
    {
        fun(arr, k-1);
        fun2(ans, arr);
        cp(ans, temp);
        //printf("!=0\n");
    //  play();
        mod(ans);
        return;
    }
}
int main()
{
    int cnt, cnt2;
    
    scanf("%d%d", &b, &m);
    
    for(cnt = 0; cnt < 2; ++cnt)
        for(cnt2 = 0; cnt2 < 2; ++cnt2)
        {
            scanf("%d", &a[cnt][cnt2]);
            ans[cnt][cnt2] = a[cnt][cnt2];
        }
    
    fun(a, b);
    
    play();
    
    
    return 0;
}


/*
算法提高 夺宝奇兵
*/
//夺宝奇兵
#include<stdio.h>
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int N,i,j;
    int a[101][101]={0};
    int f[101][10]={0};
    
    scanf("%d",&N);
    
    for(i=1;i<=N;i++)
       for(j=1;j<=i;j++)
            scanf("%d",&a[i][j]);
	
	 for(i=N;i>=0;i--)
		for(j=1;j<=i;j++)
		{
			f[i][j]=max( f[i+1][j],f[i+1][j+1] )+a[i][j];
		}
     printf("%d\n",f[1][1]);
    return 0;
}



/*
算法提高 利息计算 
*/
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */



int main(int argc, char *argv[]) {
	double x,n;
    double sum=0;
    scanf("%lf",&x);
    scanf("%lf",&n);
    sum=x+(x*(n/100)*0.8);
    printf("%.2lf",sum);


	return 0;
}




猜你喜欢

转载自blog.csdn.net/RodeStillFaraway/article/details/52048175
4-3
今日推荐