70--86

70 回文数
70--86_第1张图片

#include
#include
#include
//将n进制转化为10进制整数
int trans(char str[],int n,int len){
	int i,sum,x;
	sum=0;x=1;
	for(i=len-1;i>=0;i--){
		sum+=(str[i]-'0')*x;
		x*=n;
	}
	return sum;	
}
//判断字符串是否回文
int huiwen(char str[],int len){
	int i;
	for(i=0;i<len/2;i++){
		if(str[i]!=str[len-1-i])
			return 0;
	}
	return 1;
}

int main(){
	int n,len,k,temp,res;
	char str[200];
	scanf("%d %s",&n,str);
	k=0;
	len=strlen(str);
	while(huiwen(str,len)==0){
		k++;
		len=strlen(str);
		temp=trans(str,n,len);
		strrev(str);
		res=temp+trans(str,n,len);
		itoa(res,str,n);
	}
	  if(k<=30){
        printf("STEP=%d\n",k);
    }
    else 
    	printf("Impossible!\n");
	return 0;
}

78 铺地毯
70--86_第2张图片

#include
#include
int main(){
	int n,i,j,x,y,count;
	int **a;
	scanf("%d",&n);
	a=(int **)malloc(sizeof(int *)*n);
	for(i=0;i<n;i++){
		a[i]=(int *)malloc(sizeof(int)*n);
	}
	for(i=0;i<n;i++){
		for(j=0;j<4;j++)
			scanf("%d",&a[i][j]);
	}
	scanf("%d%d",&x,&y);
	
	count=0;
	for(i=0;i<n;i++){
		if(x>=a[i][0]&&x<=a[i][0]+a[i][2] && y>=a[i][1] && y<=a[i][1]+a[i][3])//无敌妙
			count=i+1;
	}
	if(count){
		printf("%d\n",count);
	}
	else{
		printf("-1\n");
	}
	return 0;
}

80 最小乘积
70--86_第3张图片

他的本质就是两个数组在乘的时候一方最大*另一方最小和再相加即可
#include
#include

//从大到小
void sort(int a[],int n){
	int i,j;
	int key;
	for(i=1;i<n;i++){
		if(a[i]>a[i-1]){
			key=a[i];
			for(j=i-1;j>=0&& key>a[j];j--){
				a[j+1]=a[j];
			}
			a[j+1]=key;
		}
	}
	
}
int main(){
	int i,n,sum,N;
	int *a,*b;
	scanf("%d",&N);
	while(N--){
	scanf("%d",&n);
	a=(int *)malloc(sizeof(int)*n);
	b=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(i=0;i<n;i++)
		scanf("%d",&b[i]);
	sort(a,n);
	sort(b,n);
	sum=0;
	for(i=0;i<n;i++){
		sum+=(a[i]*b[n-1-i]);
	}
	printf("%d\n",sum);
	}
	return 0;
}

86 瓷砖铺放
70--86_第4张图片

#include
int n;
//递归求解,4可由3 + 1得到,也可由2 + 2得到 ,3可由2 + 1得到,也可由1 + 2得到,通过此过程可知递归式为f(n) = f(n - 1) + f(n - 2),递归出口为n = 1是f(n) = 1, n = 2时f(n) = 2
int count(n){
	if(n==1)
		return 1;
	if(n==2)
		return 2;
	else
		return count(n-1)+count(n-2);
}
int main(){
	scanf("%d",&n);
	printf("%d\n",count(n));
	return 0;
}

你可能感兴趣的:(研究生复试)