蓝桥杯 基础题


BASIC-2 01字串

问题描述:
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串

样例输出:
00000
00001
00010
00011
<以下部分省略>

代码:

#include<stdio.h>

int main()
{
	for(int i=0;i<32;i++)
		printf("%d%d%d%d%d\n",i%32/16,i%16/8,i%8/4,i%4/2,i%2);
	return 0;
}

BASIC-3 字母图形

问题描述:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式:
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。

输出格式:
输出n行,每个m个字符,为你的图形。

样例输入:
5 7

样例输出:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

数据规模与约定:
1 <= n, m <= 26。

思路:
在这里插入图片描述

代码:

注意:这里是引用<stdlib.h>而不是<math.h>

#include<stdio.h>
#include <stdlib.h>

int num[50][30];

int main()
{
	int n,m,cap=65;
	int i,j;
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			num[i][j]=cap+abs(i-j);
		}
	}
	for(i=0;i<n;i++)
	{ 
		for(j=0;j<m;j++)
			printf("%c",num[i][j]);
		printf("\n"); 
	} 
	return 0;
}

BASIC-4 数列特征

问题描述:
给出n个数,找出这n个数的最大值,最小值,和。

输出格式:
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

代码:

#include<stdio.h>

int num[10010];

int main()
{
	int max,min,sum,n;
	int i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
		if(i==0)
		{
			min=num[i];
			max=num[i];
			sum=num[i];
		}
		else
		{
			if(min>num[i])
				min=num[i];
			if(max<num[i])
				max=num[i];
			sum+=num[i];
		}
	}
	printf("%d\n%d\n%d\n",max,min,sum);
	return 0;
} 

BASIC-5 查找整数

问题描述:
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输出格式:
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。

代码:

#include<stdio.h>

int num[1010];

int main()
{
	int n,i,m,pos=-1;
	scanf("%d",&n); 
	for(i=0;i<n;i++)
	{
		scanf("%d",&num[i]);
	}
	scanf("%d",&m);
	for(i=0;i<n;i++)
	{
		if(num[i]==m)
		{
			pos=i+1;
			break;
		}
	}
	printf("%d",pos);
	return 0;
} 

在这里插入图片描述

BASIC-6 杨辉三角形

问题描述:
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行
1  
1 1  
1 2 1  
1 3 3 1  
给出n,输出它的前n行。

输入格式:
输入包含一个数n。

输出格式:
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

思路:

在这里插入图片描述
代码:

#include<stdio.h>

int num[40][40];

int main()
{
	int i,j;
	int n;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		for(j=0;j<=i;j++)
		{
			if(j==0||j==i)
				num[i][j]=1;
			else if(j!=0&&j!=i)
				num[i][j]=num[i-1][j-1]+num[i-1][j];
		}
	for(i=0;i<n;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%d",num[i][j]);
			if(i!=j)
				printf(" ");
		}
		if(i!=n-1)
			printf("\n");
	}
	return 0;
}

在这里插入图片描述

BASIC-7 特殊的数字

问题描述:
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。

输出格式:
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

代码:

#include<stdio.h>
#include<math.h>

int main()
{
	int i=100;
	for(;i<=999;i++)
	{
		if(pow(i/100,3)+pow(i%100/10,3)+pow(i%10,3)==i)
		{
			printf("%d\n",i);			
		}
	}
	return 0;
} 

在这里插入图片描述

BASIC-8 回文数

问题描述:
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

输出格式:
按从小到大的顺序输出满足条件的四位十进制数。

代码:

#include<stdio.h>

int main()
{
	int i=1001;
	int ge,shi,bai,qian;
	for(;i<=9999;i++)
	{
		qian=i/1000;
		bai=i%1000/100;
		shi=i/100%10;
		ge=i%10;
		
		if(ge*1000+shi*100+bai*10+qian==i)
			printf("%d\n",i);
	}
	return 0;
}

答案:

1001
1111
1221
1331
1441
1551
1661
1771
1881
1991
2002
2112
2222
2332
2442
2552
2662
2772
2882
2992
3003
3113
3223
3333
3443
3553
3663
3773
3883
3993
4004
4114
4224
4334
4444
4554
4664
4774
4884
4994
5005
5115
5225
5335
5445
5555
5665
5775
5885
5995
6006
6116
6226
6336
6446
6556
6666
6776
6886
6996
7007
7117
7227
7337
7447
7557
7667
7777
7887
7997
8008
8118
8228
8338
8448
8558
8668
8778
8888
8998
9009
9119
9229
9339
9449
9559
9669

BASIC-9 特殊的回文数

问题描述:
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入格式:
输入一行,包含一个正整数n。

输出格式:
按从小到大的顺序输出满足条件的整数,每个整数占一行。

代码:

代码有点暴力

#include"stdio.h" 

int main()
{
	//99999  45 若n小于45则说明五位数 
	//999999 54 
	
	int n,num=10001,temp,sum=0;
	scanf("%d",&n);
	int ge,shi,bai,qian,wan,shiwan=0;
	while(num<999999)
	{
		temp=num;
		ge=temp%10;
		shi=temp/10%10;
		bai=temp/100%10;
		qian=temp/1000%10;
		wan=temp/10000%10;
		shiwan=temp/100000%10;	
		sum=ge+shi+bai+qian+wan+shiwan;
		if(shiwan!=0)
		{
			if(sum==n&&ge==shiwan&&shi==wan&&bai==qian)
				printf("%d\n",temp);
		}
		else{
			if(sum==n&&ge==wan&&shi==qian)
				printf("%d\n",temp);
		}
		num++;
	}
	return 0;
}

BASIC-10 十进制转十六进制

问题描述:
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。

输入格式:
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647。

输出格式:
输出这个整数的16进制表示

代码:

特别注意0的位置

#include<iostream>
#include<string>
#include <algorithm>
using namespace std;

char maps[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

int main()
{
	long long int num;
	string str="";
	int i=0;
	cin>>num;
	while(num/16>0){
		i=num%16;
		str+=maps[i];
		num/=16; 
	} 
	str+=maps[num];
	reverse(str.begin(), str.end());
	cout<<str;
	return 0;
}

BASIC-11 十六进制转十进制

问题描述:
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入:
FFFF

样例输出:
65535

代码:

注意输入使用字符串输入,不要使用数组输入啊啊啊啊,这里我被卡了好久,答案正确就是过不了测试点,才发现原来是输入问题 呜呜呜 T∩T

#include<stdio.h>
#include<cstring>

char num[9];

int main()
{
	int i=0;
	long long total=0;
	scanf("%s",num);
	for(int j=0;j<strlen(num);j++)
	{
		if(num[j]>='0'&&num[j]<='9')
			total=total*16+num[j]-'0';
		else if(num[j]>='A'&&num[j]<='F')
			total=total*16+num[j]-'A'+10;
	}
	printf("%I64d",total);
	return 0;
}

BASIC-12 十六进制转八进制

问题描述:
给定n个十六进制正整数,输出它们对应的八进制数。

输入格式:
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0 ~ 9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000

输出格式:
输出n行,每行为输入对应的八进制正整数。

【注意】
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。

样例输入:
2
39
123ABC

样例输出:
71
4435274

代码:

这道题你可能想要先将十六进制转换成十进制再转换成八进制,虽然确实要使用到转换,但是这样过不了测试数据,long long型也不够。
(先转换成十进制的版本)

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

char numH[10][1000];
char mapO[9]={'0','1','2','3','4','5','6','7'}; 

int main()
{
	int n,i,j,k,wei;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>numH[i];	
	}
	for(j=0;j<n;j++)
	{
		string strO="";
		long long totalD=0;
		for(k=0;k<strlen(numH[j]);k++)
		{
			if(numH[j][k]>='0'&&numH[j][k]<='9') //转换成十进制 
				totalD=totalD*16+numH[j][k]-'0'; 
			else if(numH[j][k]>='A'&&numH[j][k]<='F')
				totalD=totalD*16+numH[j][k]-'A'+10;
		}
		while(totalD/8>0)			//转换成八进制
		{
			wei=totalD%8;
			strO+=mapO[wei];
			totalD/=8;
		}
		strO+=mapO[totalD];
		reverse(strO.begin(),strO.end());
		cout<<strO<<endl;
	}
	return 0;
}

来看一下恐怖的测试数据
input:

10
76
931FA
C9DAB2B36C
248B87D6AE33F9A
62D7183A5D5789E4B2D6
B441E2411DC709E111C7E1E7ACB6F8CAC0BB2FC4C8BC2AE3BAAAB9165CC458E199CB89F51B135F7091A5ABB0874DF3E8CB45
43A5EB93B0441E9CA4C2B0FB3D30875CBF29ABD5B1ACF38984B35AE882809DD4CFE7ABC5C61BAA52E053B4C3643F204EF259D2E98042A948AAC5E884CB3EC7DB925643FD34FDD467E2CCA406035CB2744CB90A63E51C9737903343947E02086541E4C48A99630AA9AECE153843A4B190274EBC955F8592E30A2205A485846248987550AAF2094EC59E7931DC650C7451CC61C0CB2C46A1B3F2C349FAFF763C7F8D14DDFF946351744378D62C59285A8D7915614F5A2AC9E0D68ACA6248A9227AB8F1930EE38AC7A9D239C9B026A481E49D53161F9A9513FE5271C32E9C21D156EB9F1BEA57F6AE4F1B1DE3B7FD9CEE2D9CCA7B4C242D26C31D000B7F90B7FE48A131C7DEBFBE58165266DE56E1EDF26939AF07EC69AB1B17D8DB62143F2228B51551C3D2C7DE3F5072BD4D18C3AEB64CB9E8CBA838667B6ED2B2FCAB04ABAE8676E318B402A7D15B30D2D7DDB78650CC6AF82BC3D7AA805B02DD9AA523B7374A1323EE6B516D1B81E5F709C2C790EDAF1C3FA9B0A1DBC6DABC2B5ED267244C458752002B106D6381FAD58A7E193657BDE0FE029120F8379316891F828B8D24A049E5B86D855BCFED56765F9DA1AC54CAEAF9257ABC67B451BC70B0E52817DD1B704A6B418A83FD4A9CA4C89E1A6E779F8D9E9DF18747591E5B314C05763EDCD59632423CA83F14D6F073D784DB2B7001643A6760
F9F0DD6DDD0A59E241DC1ED720287896286F5CC3ADDF6C1ADF6ED35F477B0022981E5E1FBFE1BFB8E26B5BA93253275BF6A44B3FA1051CDFE3B3F5D2725A9A580FD5B04525B3182FCD2B3FDA124ACA3C901406A2B55CD8B95D48D13E379F1CCBCDFC39FEE4ACC5523AA0BDEF57E63A1F81CBABA9F45CAAED48D06BFB3D16836042BED57CAC84761BFEB59A0C81304908BB781E4BBDF230D2E977374B97BD0B6B7D38B736428826A0F2729BE2290256DC304E875C9D4B3FB2125AE3D0CD3130D6114989517ACA97DAA2485181EB31C07D2C6A5BCC587E048A6D2BEACD6FE206F225C708461B41FDB5AD087C5DC4FCAEEC3A3437A42E51B065D6E4332F71B109D3317681AB0FCBF31C9F1C23BA46B4F983AF9214D13AC3DDF6C03F3E9854C4D47741A5576812BE0B5CB8BF647B930687EC881DF76191F9C468C1736EEF1E59635EB6CBD2C73B00068C8FFEDEDEC2826D114DC1F8824924FA079056E25A5DDBAECEB90A18C51F919A83AE980E25BF06DD486427DFDEE6F708AA642625CE4C4298AFDD7AC48AA81B0C5608C2D801543EDEEAB5479C1342E4E4AEC719F1A46E33C1D761EFDF22116051E18FA714C72FAE0756835527748E4DF2E728E3DAAF94E9B3F37489C0D4E12D40469296D35673027F5E4D70D54B668A7C00F96CCB23F2562A468B650A1719186285BE1893B861E8B2E3E49EEA5F37799FE4DFC738F99E140F8E31D1B21E9882867563C9BC24A39A2195266D87B20348ABD0FA9A6BF0E8A0935B9B82334378B148132AD85C83433D68803026469BE4C2DD5F738CF0F4321AAAADAC4E2D90253F28E9B65B74FA6040AEE5A23CFDD120058FE454FC8E7FEBF9ADE4F11FEE01E16604A5892179064FFEDD3CE4BD2CE0D46D8121A422D282170E43B276F92D9F10CA1FBB3DD1F530C3F07A3E028301211FB2E6E13B22153D92E0C1EC36F3825910CF7A0A53D68041221E30A66AAECF8DF4C6EC13FEA8EE900BE3B891230E28B2C78A49D377B55555038BC2CE5CD848A002A4C873F3958EA8233E5FCAC9202C12FB6B3DE307886208536A325FC7FE4003C6EF3C244ACADD2208D3A226924D240EAEEEB02FBE98BBAC37FD92434806D157F35A379E6261D1D08DE2F253A5976EF61405CA32CA3AB1A3E85DAA0509C68BC90DEC72E3C1D728A000DBAD0A7C1F8D88A741925532C6A66B646116B82C7AA02476608B5CD128783EC9FEFA617EC1EE555B5D6A94BBC24F008FE7A581342137683B595FD0A92E83F02D7C20D54F677CFA753C41CEAFD32C349B1CBE1FE87546FCB28F35EE4B1674A0FBCAAEA861DA7C63EF224008B1E258354FFED963A3E2F45D37F78FF30D6669BA8A864E9E1700C5DFDD75C68D4E3A7E408C6CAFBB7BB3182E59320BF4A2E10218E758703EBE1C63ACDDED9D13FF4F167FDC74CA28834E7FA4C81552841D323B10785427CAB082F36CB7119A5A79CA4DAB5FF77B12C94BCA78199A3E4A704BDE72E6952A7E3B905186A10DF4774B2199370CC26309E993A1942912D8913B2D5545117747130A6BC0FE9107998D5BAA0EF2F694DA7D5D81D8F790E296FE19828747DDBA828D00ED8D41D247935ADEC550C3E8D6A53A618EEC0CF43878246F9CF6FDEC3826387B667626A5E2D164000F6FD4B0CD7F5EAC42268DB7F985D85D7BC4F75C5CBAA66F89506175AFA7704FB03B787C427F8DE0631C481E8C5FC9E79221A9DFC4E42C58F654E626286E146B68C1290EEE20A789DDDC40268859DB433045A438268CD06BE372398B2D5F892CA714B5CEB4A840324A474D36A85317FBE0FA5B80F2943C677BEB8112965BD46C566A1EB104530BA7692EA31496F7B530B9AD75E793BAE515E43974D1BC861B6D40AB682FBD993BE1F2A667713F75AD2EEC944C3F9D8C87E798DF0513488F6AD4678A3B9C82909772F51FA23EBBD16B5C2D7580112A1B19D1EF08136CF4D5F211F868979B2A733441359580174FC31E416A9F12B3C2706B1A0BF9B00FFD21B6210B11DC59EC947BE86D11E10DE2E980B8BC988E26ABA269AC6BD4CD2BF0471FFCB95377922449DE5393850A00A57B47800D374D961DFEB51489A83A8EF0947147E7E248955831D555EFE2A60969DDB14993CDB530D61BB70A6EC05CAB57909DA206FBB2C89D3444EB2AB7653CDCC6968AC757A103F37376EA0A17F43C0F2A6A4229ACBAFAD6D5CCFD6045572564FCF3F1D9D83C202F5FB4C1507A79FDDFAC29DF2A7569599B84F4644DEB6E83D20FBDFD862E08793FD2337705263BA0DA097F6F59E515E45C68FD003266D07BA7426A1B3F145F8ABF2BC2BF51622DDC41EAC05FF6446CE1B1C837789DBBA87EA6866E5549AA68C1989D0159E0499B731097EED287DEF9F91961ABA8CE15A98B9137F0977656F5F1E5281D0DB225BA14B4BA442BB71AC1BA6E27B34656C00D4B1F65380EF19C2469290DC541B01CD57E4D3753654F173706003C57D17ED4342725F785CD4D4754D5412A8FB0E841C79EC865D2210685A6AE7C8FC3FAB4B8B467CCC9FEAF434E9ED0B5F79F143CCE135DF27E01D5413D00DB6D2FC33FF0D032E245156EAB0D80E6B43D3F06EF6B09DEC23D79B14BEDBC36063353A330E3AB16D434DE52A4F502C18F4D3E06FE999AF7E2BB01DA5C05EC66BB3E93481D1B70252D13EED3BD999F05A33478C85E3DE5213341215DFE68D6D8A1C1989E6DB52E651A73BC0AA737D0F71B8A429AF4F12574FE7BA854F8BC9B4A6C5AEE5D24F5A699404E8A272D4B886F4B939E0B3F0D5969AB7259A77E3F69EA48DD6E89D9632DCC84FDD944774D0274A5113AA03135E0264131A761FAEFC547A58DF2E231811A75BA752D61740394A4A2195FC814A2E189CFEEC4F38F61415E377863177BA5C2E81C6D050856A97F7B6E3D2449FEFC0D41ABEA0E355DECC5734B06F4FF3EB3CF56A30B23070F3D4B0860E54E47CFB8F0E93F4525C34008B0110F64DBCAA729713A0702CC50C5975A859FA7A614D3E441E48E75BC572EF787D26790DA5AD3E24C6CBD16A7DC5C3E400A79B430E03C27993465A0C7C140F80F288DCBDBC07E707B4E0EEC6BDABD2BC435200FBC02B73227026FECAC659805C4AE4BEF7E125458C5A249EE543EC4388E7C95B03C38180DDBF24D09147D8A508CC1172435D4DD1A80CCDD5E1CB9719FD51FC33F8045E5F66C33982A5D3CECBC1CBDFEC7F0CD6C3C86F1F1B4FE0DAB9B848734F25BFB727F96088BC79C437EEF2675B67016B9928289A0467E2C19A09C602169170C09E9B72576BF4DB6656F1CF3E5DFDDCD6A611869F183E3948F49C3DA9A96753D0AE124A152535E7DEB7AF448EDE53123B04E4FF914C73341FBBEFF6DC42F542147F86E173DE61370E2EE14BD8EDD2FE76DFCC14FE25F5CF4ED2F1DC9B97E955F34CF50E42338F3CD0EC2B8B7225B8AABE6A46889BB1AED7FB316BCDDF287C32B9CF0479F2A917002318ED6CC843575011F156A484D9BD9D0A5F8BB44F897D98F894E396760249F4443C0E04E8D566D5E69C9220922DC11055C53C91566BC30A9962C925B427537B830C0AD5040D70719E3576A2ACA001B85B4552A66A3DAAE3829F83220C20DD829D7EF145B725219A32AB5CD58055DE86BF5A19FC11232BD5D7023E8BED1BB92687090F6118433290992D7A85891323ABAA4AAACB20E5275C189821EABFED288C2D6C727A36F5D51EDA7FC5A748460D22A8F1B6BECB3A058DFFCB4628E7EE401E90F46B2365D6A53A5F596824F033141A40EAB0D15A700AA5AFE070461792BACFBAA6A78F2FF2A97495406877009BB5B6F5C9C48E480E172AD6B3E2AE23AD8537A00648580562D8CAE7DD97BCA592AD94D9B110A2504290C7894100DA57C04541EF20FC25D67664DED20E2D874578AC99BC9B8B0517B7B969B67D3F484C0F8A8361EECE4D6F418AA3010415C51C496CCCDBB99F6FEB175BA6DBAE063128A9465210BBF2AEDB527F84A22A85BBD542C94DAF89137EEC15C996CB141CFE230ED4B74405784545B0E47A08F14EF6204F406846EBE2037B350A002F17D0DF02E524D6BB19D1C4D0ADAADD9E46E16F344591B4DCDAEAFBA984351C3521780AD4066BA387D61C1B5908E141772EF38C782D4C0C4E25A310C18A2DB94D730008825CF6834A8ED9E9A73D4E68CEBCEB46EA3D0B04682321DC809CF04BEF7CBC29656616A7ECA0D7D5861765245900539B8F195B038B4521BA7C1E2327D37260EEFF84B8733B86C30402225492705D03CF243DCA006962C66C88EED70475278E6B298E49EA24CEB3B3B91812D87F00D6BF03D4CCEE0ADBD8F910122EBADBAA159187553333E0FB8E4AE6C147B225C4A652DB70EB3CB2840CEF2A072B94058ABEC89487FC4AECEF8CEB7E299BD9063C4F4D3D4298D74B6D848F2A8B5545B71F76CA31DC9A3E5ABDE3C1D4C2A175895FF1A227EC11A6B54A80B5577F8E417906BA8D169283938DD0D8520C18B692FA9A41868180513DE1EC93E9002B6BD5560A8800980EA3C84A4ED37D398956EACE446440D4E78AFC44A272FAB830E1BA0FF643618580F7C4B76295C4DF5B1061F5738E403C024D6F4C2D2E1FE6BF6106679E5EF8AFBEC1E0E0D0EFFC5ABCBB213B089F14EC2BD0BB09BF8BBD57912B2572E01F40B7B87648FF77A2509E1CA3116F17E679D22496C85300650F31BD4DEAC02B6943C675C4D27D2D22D63837522224D8D1B982E46C6E98BCA82D15567789B5187C2FF035CA362F2D74A89FF167A1DCA48C37C6D900F3F1075AFEAEF06A236C7E8A6403D13C43D4A2E918809EAB1078FF2532813BD7EBB8DA2E2AFB8969AD19C3E056191E009C876A58444CEA5886149F4F5586486D4F4A9A3EE7AC104965E042F9870CF6945EEF81D6873A773ED1E14DBC4B831177F66773E0A1A28D05FE73B2FFD72E8A580BF7ED79E1B7FBCE93145032751FF67F27704E9304AFF6D8AECFEF2553449C4B3BC795A9A489B5253E41E6639B737BEA6A100C9A023B750B45C2B355EC8586FE10E1C8BDAE8149C8E9A9CFEAB6F3DE2EE0FB8A82804C90479E15DFF96EC3CE1BF067AEA2EEF8E3F820DF0D86B5983A32A9A4746525D09D8BD6AD333E8C6B69E02849CBFE0CE99747DF4028EA455BE3B1B0A7B95B645FB9688B8A3647BA2ADEB9E509F645A9453BDB6569BA0743121CBF1B801C5B6A095D4B2A4E545976B826732F43C9F23FB8DF3FA7DFC28384CAA3EC320FBF1FEC7BBBB5284EBD231EEB1C84E8397485001CBC1D46CF3E34C1FDD72BF546ADCADD68985DE1D1F05B149ECB9B0D2AAE57BBF435116E26E71FCAD85636450E356E1524A4612871080C3E4847E8DF704DF521AD50E88598D940789C074D6BDB8C0BEA83A6B3B4B8E0958218965013BAFB5D6D103C3E1F6FFF47160BC5BD86781C57968C3BA4A1390712D1D9687FEE7FBC743F16ABA5CDED4FF20CB742621D1C980C7122DC79956E55051BC5E27FF9B91B59D8BA423E7ACCFC217E651E407F98BF187C2BE596F52F140936E4434B2E4DD55427F0D96CE9B0DB902746A92D76A4B08D77E4041FDCFB88BAF00A927081441C193FD44E31B2C3A8D98D310A18C5CD1E64D4812B3DDF077D1FB40BF13B6087EFCB34D5003DF357166CA7798A4FAD68C24F71471740B97CFE8A5F3D98C453C1500C1432C8371A318BBDAEB3677BA4C04CC6108D8B4967AE25CC47FAE769B29FF5505EDD917F81EA7A6B155FCB87E17D7CDCAAA4B13321D9B34C8AC554C3630D0D9A73E24257320F55BEF734CF8238F368DDCC00E571880DDCBC3E0FE81110479145D45BADD25DF29BED9EC77E88ECF7E3CB8272F444136BE48824F92811408245EC75E692AA50544DC62B0431582EA6382AD0062A17A6BE474634A660E8E9E110BF0B52569FD5D1C17F616C144FD20F2BE2634BADA7278F9FEF04B29F161253D35479F16A89108AF69FB41433A450723C6A56BC03513DC2352EA32D6D2BD9E064BBA67AACCD980DD2B75E5CB7780586A324A9F46B1F31C038896D514C9421BC5D0F6F3CA4CD68E90626377740B62627326A296CD2A3B8DBEF21798BA31CA33D59772E4F0E3B6074F9562D1C028A5B8B4F26D66E499A90E893FC008131B8C3313670CDE168BF8A82D7EE76FA7A34E651CC19A0A08500F82DF0B67A1E4422A737450E5AEDFEDF60C507C71D65188B0B240225C02CF0B507B0E78F4E456C0683A85CE2D0EC09100C1E39D771CDED460EE5BC78D54DE5EE2FC589DFB9C960F6FDCAA3279647B26D1239C08795005F64C2E660DF62624CF6F2FB282CD2C2127D554B61AC30E8DEEC0D7359F2BB5CDC921DD7F74282A50811684B13ECE38BF1E0FB8E3C0BEB0F3109945A73656E05FE5EADCD9D88887B9752BAC2D273078F6DE0BAD475CFD3B6A085A4776EA6625CF3CAE9F5EB5BF01909FAD6135B9BDE7C2370C65A1A50A6AAF94CF5F408FD66A891857EF88493A3D9C25B7408CF536FBF0457240A99D3CBD8D23473C3326912826D98292B20EEBB68EAC5D980BF9C12E7F8F111C41B2C69443190A2151A12C09C88D99ADB507B9C0CD9C7BDCC8DE4D705FEF98C4DCB8578142EBDB7A35882088F678E3CB0845FC74E5FC0764CECEE46EBD691351B96A5DE42E03567143F3761237C4A155AC0F9E3CC3F1962E9210823B9F04059A199B8D74066AC885A952B8E47E873215BB038788DE296AE1333EC133FBB3DC8978CFF48C2A5953A86D72FA6E5113D9C51840DCCF718C424B0BDF53DB4FE28A7A2BAF87FF87BDAF8AB59096BD59FE3686225A9492C4F6370EC9F5FA3542379BDBD3577E932895F94B2312D4716A9F56A29F91D24FAE59795AC6C9A3B0D402AA44AE57097B7C4F5991F5A985A59A744B8E9D6A6D5E99DE36F2B9C3F6880FC4A43419E8636FC3DF9C245E744FD4E988EBCF4A7ADD9A06992BD894CD39113AA1560A184E5E8642F7DDF71B455668009579F814672FD61CDE9C5B8A0D06507E5E75699C0BBD1C9FB3B0E3AE0A45AB309B5F4EC4971A4A9FD5FB8A994EEF92F3D4212E5B665A0F9E489C2357146A65D3904BE964FBEFA7DE07B2A09B4F5A43DD3181AE69A494C63CDEE7E82378DCBB9EC2F7050AA9F6022D005E8710FFCAA58678D8DE27
........

output:

166
2230772
14473254531554
11105607655270637632
142656140722725361171131326
13210170440435616047410434374171726266761453005662770462136052707352525621313461054341463456117521542327670221513256604164676372145505
4164572711660210172345114126076636460416562771232572554326363423022632656420240116724637636536134303352451340247323033103744023571131645646002052451052542750411454766175562225441775151767243176131451003003271311642313441230762434456336201464162437401010312407446110523130605251535470251604164454310047235362252770262270605042013222054106111046072520525710112354263636230734312061642434614160145454215206637454151176577566170776150515677745061521350415706542613112055215362125412365505262360326425451422212444236534361446073434254365164434711540232444036223524613037465124237745116160627234103505267271743372453766534474330736166777316356133163123664604413223303072000133771026777444241143437365773713005451146674533417337115116327407730646530661373066661024176210505521252160751307674375203453651506141656554462717214565016063173335512627712540452727206355614305500124764255460645537355570312063065370127417275250013300556632512216671564502310767153242664334036276702341307441666570703765154120733615552741265732231622114213035220002542033261601765526123741446625736740774012211017406744613211077012134322224022362670333025336376652635457635503261246256537111275274317321215707026071224027672155602246550142501775225162446211703233473637433172357430350726217133142460053543733465313062204362501761232674071727411554533400054416463540
......

正确的方式是使用01二进制字符串表示

目前这段代码虽然能运行正确但是测试点没通过,还在找原因

关于DevCpp调试时看数组内容可以参考以下操作:
https://blog.csdn.net/frostime/article/details/96143531

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

char mapO[9]={'0','1','2','3','4','5','6','7'}; 

int main()
{
	string str[10];
	int n,i;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>str[i];
	}
	for(i=0;i<n;i++)
	{
		string bstr="";
		for(int j=0;j<str[i].length();j++)
		{
			switch(str[i][j])
			{
				case '0':
					bstr+="0000"; break;				
				case '1':
					bstr+="0001"; break;
				case '2':
					bstr+="0010"; break;	
				case '3':
					bstr+="0011"; break;
				case '4':
					bstr+="0100"; break;	
				case '5':
					bstr+="0101"; break;
				case '6':
					bstr+="0110"; break;
				case '7':
					bstr+="0111"; break;
				case '8':
					bstr+="1000"; break;
				case '9':
					bstr+="1001"; break;
				case 'A':
					bstr+="1010"; break;																									
				case 'B':
					bstr+="1011"; break;		
				case 'C':
					bstr+="1100"; break;		
				case 'D':
					bstr+="1101"; break;		
				case 'E':
					bstr+="1110"; break;		
				case 'F':
					bstr+="1111"; break;		
			}																			
		}
		int len=bstr.length();
		if(len%3==2)
		{
			bstr="0"+bstr;			
			len+=1;
		}
		else if(len%3==1)
		{
			bstr="00"+bstr;		
			len+=2;	
		}
		//开始转换
		string ostr="";
		int group=len/3;
		int k;
		for(k=0;k<group;k++)
		{
			int num;
			num=4*(bstr[3*k]-'0')+2*(bstr[3*k+1]-'0')+bstr[3*k+2]-'0';
			ostr+=mapO[num%8];
		} 
		int flag=0;
		for(k=1;k<ostr.length()-1;k++)
		{
			if(ostr[k-1]=='0'&&ostr[k]=='0'&&ostr[k+1]!='0')
			{
				flag=1;
				break;				
			}

		}
		if(flag==1)
			ostr.erase(0,k+1);
		cout<<ostr<<endl;
	}
	return 0;
}

BASIC-13 数列排序

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

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

输出格式:
输出一行,按从小到大的顺序输出排序后的数列。

样例输入:
5
8 3 6 4 9

样例输出:
3 4 6 8 9

代码:

#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
	int n;
	int num[210];
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>num[i];
	}
	sort(num,num+n);
	for(int i=0;i<n;i++)
	{
		cout<<num[i];
		if(i!=n)
			cout<<" ";
	}
	return 0;
}

另外一种方法就是使用STL中的SET来对数列进行排序

#include<iostream>
#include<set>

using namespace std;

int main()
{
	set<int> v;
	set<int>::iterator it;
	int n;
	cin>>n;
	int num;
	for(int i=0;i<n;i++)
	{
		cin>>num;
		v.insert(num);
	}
	for(it=v.begin();it!=v.end();it++)
	{
		cout<<*it;
		if(it!=v.end())
			cout<<" ";
	}
	return 0;
}

BASIC-14 时间转换

问题描述:
给定一个以秒为单位的时间t,转换成时分秒的形式,没有前导0

样例输入:
5436

样例输出:
1:30:36

代码:

#include<stdio.h>

int main()
{
	int time;
	int hour,min,sec;
	scanf("%d",&time);
	hour=time/(60*60);
	min=(time-hour*60*60)/60;
	sec=time%60;
	printf("%d:%d:%d",hour,min,sec);
	return 0;
}

BASIC-15 字符串对比

问题描述:
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
  1:两个字符串长度不等。比如 Beijing 和 Hebei
  2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
  3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
  4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
  编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。

样例输入:
BEIjing
beiJing

样例输出:
3

代码:

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

int main()
{
	string str1,str2;
	cin>>str1;
	cin>>str2;
	if(str1.length()!=str2.length())
		cout<<"1";
	else if(str1==str2)
		cout<<"2";
	else if(str1.length()==str2.length())
	{
		transform(str1.begin(),str1.end(),str1.begin(),::tolower);
		transform(str2.begin(),str2.end(),str2.begin(),::tolower);
		if(str1==str2)
			cout<<"3";
		else
			cout<<"4";		
	}
	return 0;
}

BASIC-16 分解质因数

问题描述:
求出区间[a,b]中所有整数的质因数分解。

输入格式
  输入两个整数a,b。  2<=a<=b<=10000
  
输出格式
  每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
  
样例输入:
3 10

样例输出:
3=3
4=22
5=5
6=2
3
7=7
8=222
9=33
10=2
5

代码:

#include<iostream>
#include<math.h>

using namespace std;

int main()
{
	int a,b;
	cin>>a>>b;
	for(int m=a;m<=b;m++)
	{
		int c=m;
		cout<<c<<"=";
		int i=2;
		while(i<=sqrt(m))
		{
			if(c%i==0)
			{
				c/=i;
				if(c>1)//即这个数可以分解;
				{
					cout<<i<<"*";
					continue; //这里继续,但是不用i++ 
				} 
				else if(c==1)//分解的最后一步
				{
					cout<<i<<endl;
				} 
			}
			i++;
		}
		if(c>1&&c<m)//c是最后一个素数,直接输出
		{
			cout<<c<<endl;
		} 
		else if(c==m)//c本来就是素数,无法分解 
		{
			cout<<m<<endl; 
		}
	}
	return 0;
}	 

BASIC-17 矩阵乘法

问题描述:
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
  例如:
  A =
  1 2
  3 4
  A的2次幂
  7 10
  15 22

输入格式
  第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数
  接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值
  
输出格式
  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
  
样例输入:
2 2
1 2
3 4

样例输出:
7 10
15 22

代码:

注意单位向量
在这里插入图片描述

#include <iostream>
#include <string.h>
#define N 31

using namespace std;

long long numA[N][N],numB[N][N],numC[N][N];

int main()
{

	int i,j,n,m;
	cin>>n>>m;
	
	if(m==0)//单位矩阵 
	{
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
			{
				if(i==j)
					numA[i][j]=1;
				else
					numA[i][j]=0;
			} 
	}
	else{
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				cin>>numA[i][j];
				numB[i][j]=numA[i][j];
			}
		}
		memset(numC,0,sizeof(numC));
		for(int count=1;count<m;count++)
		{
			for(i=0;i<n;i++)
			{
				for(j=0;j<n;j++)
				{
					int sum=0;
					for(int k=0;k<n;k++)
					{
						sum+=numA[i][k]*numB[k][j];
					}
					numC[i][j]=sum;
				}
			}
			for(int i=0;i<n;i++)
				for(int j=0;j<n;j++)
					numA[i][j]=numC[i][j];
			memset(numC,0,sizeof(numC));
		}	
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			cout<<numA[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰西啊杰西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值