首页 > 其他分享 >day10,一道竞赛题

day10,一道竞赛题

时间:2024-03-24 19:59:11浏览次数:28  
标签:奇数 移下来 d% else 一道 int day10 竞赛题 层数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int w, m, n, i, j, k, p, t;
	scanf("%d%d%d", &w, &m, &n);
	if (m % w == 0)
	{
		i = m / w - 1;              //是w的倍数时层数要减一。
	}
	else
	{
		i = m / w;
	}
	if (n % w == 0)
	{
		j = n / w - 1;
	}
	else
	{
		j = n / w;
	}                                //分别求出m,n所在的层数。
	if (j > i)
	{
		t = j - i;//往下走所需要的层数
		k = t / 2;//表示每两层合为一层(奇数层加偶数层)
		if (t % 2 == 0)
		{
			p = n - (m + (w * 2) * k);   //m+(w*2)*k则是求出m垂直于n层的数字。偶数层所需要的。
		}
		else if (n > ((m + (w * 2) * k) + 2 * ((i + 1) * w - m + 1) - 1))
               // 2 * ((i + 1) * w - m + 1) - 1表示2n-1,因为上下两层的数字之间存在等差数列的关系

		{
			p = n - ((m + (w * 2) * k) + 2 * ((i + 1) * w - m + 1) - 1);//奇数层所需要的。
		}
		else
		{
			p = -(n - ((m + (w * 2) * k) + 2 * ((i + 1) * w - m + 1) - 1));
		}
	}
	else//这里是相当于更换m和n的位置当m更大时。又执行了一遍。
	{
		t = i- j;                         
		k = t / 2;                       
		if (t % 2 == 0)
		{
			p = m - (n + (w * 2) * k);   
		}
		else if (m > ((n + (w * 2) * k) + 2 * ((j+ 1) * w - n + 1) - 1))
		{
			p = m - ((n + (w * 2) * k) + 2 * ((j + 1) * w - n + 1) - 1);          //奇数层所需要的。
		}
		else
		{
			p = -(m - ((n + (w * 2) * k) + 2 * ((j + 1) * w - n + 1) - 1));
		}

	}
	printf("%d\n", p + t);//本质上就是先让m移下来(求相差几层),再考虑n离m移下来的距离
	printf("此程序由23本计算机2班18号辛凯编写");
	return 0;
}

菜鸟一个,欢迎斧正。

标签:奇数,移下来,d%,else,一道,int,day10,竞赛题,层数
From: https://blog.csdn.net/fangqinsongdian/article/details/136993655

相关文章

  • 一道平衡二叉树的求解
    最近在看二叉树的算法,我觉得有点迷迷糊糊,就是那种一看就会,一写就费。我有点很奇怪的感觉,就感觉二叉树的很多问题,其实在于一步一步的遍历(或者称为迭代,或者是递归方法),然后在遍历的基础上进行逻辑(业务)操作。首先在这讲一下递归。递归有三部曲:一.确定函数参数,确定函数的返回值......
  • WolvCTF2024 一道RE题目的分析
    doubledelete'srevenge:这道题给了两个附件:reveng1(elf)和一个未知格式文件flag.txt.enchxd看一下这个文件应该是加密过的文件再来分析一下elf程序逻辑是读取文件,然后进行加密,然后再写出文件,刚才那个flag.txt.enc加密过程:fread(ptr,1uLL,0x30uLL,stream);//......
  • 做一道题的基本步骤
    作为一个合格的编程爱好者,刷题是必不可少的。那么,我们应该如何去完成每一道题呢?下面我就告诉你做一道题的基本步骤。这里我们以去年小学组省赛第三题(Topscoding)为例。第一步:读题读题无疑是很重要的一步。认真、仔细的读题可以帮助我们更深刻的理解题意,使我们能更快、更高效的完......
  • 我觉得一道难度挺大的题目
    1.定义一个数组求出其长度,将数组与长度以及最后两个结果传入函数中去intnum1=0;intnum2=0;intarr[]={1,2,3,4,5,1,2,3,4,6};intsz=sizeofarr/sizeofarr[0];findnum(arr,sz,&num1,&num2);         2.将数组中所有元素异或起来......
  • C语言指针(适合C语言进阶者):一道题带你深入理解数组与指针的关系
    ......
  • 从 VNCTF2024 的一道题学习QEMU Escape
    说在前面本文的草稿是边打边学边写出来的,文章思路会与一个“刚打完用户态pwn题就去打QEMUEscape”的人的思路相似,在分析结束以后我又在部分比较模糊的地方加入了一些补充,因此阅读起来可能会相对轻松。(当然也不排除这是我自以为是)题目github仓库[1]题目分析流程[1-1]......
  • 每天一道蓝桥杯 Day3 移动字母
     题意: 思考过程:首先观察这道题的数据范围不是很大,一共才6个位置,并且每个位置只出现一次。那么不考虑合法,只算总状态的话就是7*6*5*4*3*2*1=720状态数很少,启发我们可以用搜索!那么搜索是用dfs还是bfs?bfs有一个特性:从s出发,第一次搜索到状态t时所用的步数,肯定是所需的最小......
  • 每天一道蓝桥杯 Day2 翻转+阶乘求和
    阶乘求和 只要后9位的话,那就只考虑后9位!如何只算后9位?有一个很经典的运算:取模。回想入门c语言时做过一道题,给定三位数,要求进行数字翻转。比如给定n,n=123,要翻转成321。一个做法是令a1=n%10,a2=(n%100)/10,a3=n/100输出a1*100+a2*10+a3即可。所以遇到求一个很大的值除以某数......
  • 每天一道蓝桥杯Day1 分考场(dfs+结论)
    题意:这道题第一眼咋看以为是图论,但是要抽象成图论的话就会变成:给定一个无向图,要求对点染色,使得任意相邻点之间颜色不能相同,试问最少的颜色数是多少?发现转化成图论后好像也没有什么图论算法可以解决,这个转化不是很有效。往往不知道怎么下手时可以试着考虑极端情况,比如考虑上界......
  • 今天BOSS约了个面试,HR直接发我一道面试题
    前言在电商、外卖、预约服务等场景中,订单超时自动取消是一个常见的业务需求。这一功能不仅提高了系统的自动化程度,还为用户提供了更好的体验。需求如下:TODO如果用户在生成订单后一定时间未支付,则系统自动取消订单。接下来就用SpringBoot实现订单超时未支付自动取消的几......