指针原来是套娃的


私信TA

用户名:uq_92467646842

访问量:53458

签 名:

个人博客:blog.imtwa.top

等  级
排  名 11
经  验 26648
参赛次数 49
文章发表 128
年  龄 0
在职情况 学生
学  校
专  业 物联网工程

  自我简介:

解题思路:
只想到了两个思路,一个是用循环做模拟,一个是找规律.

简单模拟一下,A0->A1  是A1的短边等于A0的长边减半,A1的长边等于A0的短边。

代码如下:

#include <stdio.h>
  
int main() 
{
    int x=1189,y=841;//x为长边,y是短边
    int i,n;
    scanf("A%d",&n);
    for(i=0;i<n;i++){
        int k=y;//保留上一个的短边
        y=x>>1;//让短边等于上一个的长边减半
        x=k;//现在的长边等于上一个的短边
    }
    printf("%d\n%d",x,y);
       
    return 0;
}

还有一个就是找规律:


0x/1y/1
1x/2y/1
2x/2y/2
3x/4y/2
4x/4y/4
5x/8y/4
6x/8y/8
7x/16x/8
8x/16x/16
9x/32x/16

很容易发现,当n为偶数的时候x和y除的相同,当n为奇数的时候x比y多除了2


而1 2 4 8 16 32 是2的0 1 2 3 4 5次方,也就是n/2次方

代码实现如下:

#include <stdio.h>
  
int main() 
{
    int x=1189,y=841;
    int n;
    scanf("A%d",&n);//这里使用A%d就不用单独定义字符变量或者再做提取了
    if(n&1){
        x/=1<<(n/2+1);//奇数时多除2
        y/=1<<(n/2);
        printf("%d\n%d",y,x);//奇数时y比x大
    }else{
        x/=1<<(n/2);
        y/=1<<(n/2);
    printf("%d\n%d",x,y);
    }
       
    return 0;
}


 

0.0分

178 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

#include <bits/stdc++.h>
using namespace std; 
int main()
{
	string s;
	cin >> s;
	if(s=="A0"){
		cout <<1189<<endl;
		cout <<841<<endl;		 
	}
	if(s=="A1"){
		cout <<841<<endl;	
		cout <<594<<endl;	 
	}
	if(s=="A2"){
		cout <<594<<endl;	
		cout <<420<<endl;	 
	}
	if(s=="A3"){
		cout <<420<<endl;	
		cout <<297<<endl;	 
	}
	if(s=="A4"){
		cout <<297<<endl;	
		cout <<210<<endl;	 
	}
	if(s=="A5"){
		cout <<210<<endl;	
		cout <<148<<endl;	 
	}
	if(s=="A6"){
		cout <<148<<endl;	
		cout <<105<<endl;	 
	}
	if(s=="A7"){
		cout <<105<<endl;	
		cout <<74<<endl;	 
	}
	if(s=="A8"){
		写不下了,面向结果编程
2024-01-29 22:30:19
#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int x = 1189, y = 841;
	int i, n;
	scanf("A%d", &n);
	for (i = 0;i < n;i++)
	{
		int k = y;
		y = x >> 1;
		x = k;
	}
	printf(" % d\n%d", x, y);
	return 0;
}
2023-11-15 00:49:19
#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int x = 1189, y = 841;
	int i, n;
	scanf("A%d", &n);
	for (i = 0;i < n;i++)
	{
		int k = y;
		y = x >> 1;
		x = k;
	}
	printf(" % d\n%d", x, y);
	return 0;
}
2023-11-15 00:48:07
  • «
  • 1
  • »