THUPC_2017玩游戏Game题解

news/2024/11/20 23:18:54/

文章目录

    • 题目链接
    • 题意
    • 思路
    • 注意事项
    • 代码
  • Thanks!

题目链接

题意

j z m jzm jzm和他的学妹在玩游戏,这个游戏共有 n n n轮,在第 i i i轮获胜会获得 i i i分,没有平局。

现在给出 j z m jzm jzm和学妹的得分,求是否有一种方案符合当前得分。

思路

首先我们可以知道,学妹和 j z m jzm jzm的分数之和一定是一个可以表示为 n ( n + 1 ) 2 的 数 \frac{n(n+1)}{2}的数 2n(n+1)

对于如何查找,因为 n n n只有 1 e 5 1e5 1e5,故我们可以使用暴力来查找

当然,也可以通过二分来查找 (提升不明显)

若是找不到这样的一个 n n n,就可以直接输出 N o No No

接着我们考虑如何求出答案:

有一个显而易见的结论, 1 1 1 ~ n n n中任意取,可以取出 1 1 1 ~ n ( n + 1 ) 2 \frac{n(n+1)}{2} 2n(n+1)中的所有数字

有了这个结论,我们就可以直接从大往小取,取到 a a a被取没了,就ok了

注意事项

∵ 1 ≤ a , b ≤ 2 31 − 1 \because\ 1\le a,b\le\ 2^{31} - 1  1a,b 2311

∴ a , b \therefore\ a, b  a,b 都应该开 l o n g l o n g long\ long long long

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cctype>
#include <map>
#include <set>
#include <vector>
#include <iostream>
#include <cmath>
#define pk putchar(' ')
#define ph puts("")
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
template <class T>
void rd(T &x)
{x = 0;int f = 1;char c = getchar();while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();x *= f;
}
template <class T>
void pt(T x)
{if (x < 0)putchar('-'), x = (~x) + 1;if (x > 9)pt(x / 10);putchar(x % 10 ^ 48);
}
template <class T>
T Max(T a, T b)
{return a > b ? a : b;
}
template <class T>
T Min(T a, T b)
{return a < b ? a : b;
}
const int N = 1e5 + 5;
ll a, b;
int main() 
{rd(a), rd(b);b += a;ll l = 0, r = 1e5;while (l <= r){ll mid = (l + r) >> 1, res = mid * (mid + 1) / 2;if (res < b)l = mid + 1;else if (res > b)r = mid - 1;else{l = mid;break;}}if (l * (l + 1) / 2 != b){puts("No");return 0;}pt(l);for (int i = l;i && a; i--)if (a >= i){a -= i;pk;pt(i);}return 0;
}

Thanks!


http://www.ppmy.cn/news/140662.html

相关文章

c/c++小游戏

c小游戏 和机器猜数字 陆续把以前无聊时写的小游戏发出来&#xff0c;供大家娱乐 文章亮点主要在于随机数的使用以及算法思维的开拓 大家可以自己改进 #include<stdio.h> #include<time.h> #include<stdlib.h> int main() {int rand_num,t, i, m, g, j, k…

c语言射击类打飞机小游戏感悟

c语言&#xff1a;简单飞机射击小游戏 使用c语言编写一个打飞机小游戏&#xff0c;使用键盘按键来进行游戏&#xff0c;操作方法是“a”“d”“w”或者“←”“↑”“→”来控制攻击、左、右&#xff0c;击中敌机可获得积分&#xff0c;被敌机撞中死亡一次&#xff0c;每次游戏…

几个小游戏(用win-tc可以编译)

地空对决: /*********************************************************************************程序名称:地空对决**程序描述:敌军大批飞机前来空袭&#xff0c;我方高炮奋力反击……**程序作者:宋元瑞**技术指导:31**最后修改:2009-4-4**********************************…

win11系统影响玩游戏吗?适合玩游戏吗?

有用户想要体验win11系统的功能&#xff0c;但是又担心win11性能一般&#xff0c;不知道win11适不适合打游戏。众所周知&#xff0c;微软发布了win11&#xff0c;并带来了 DirectStorage、Auto HDR、DirectX 12 Ultimate 等诸多改进。那么win11加了这么多游戏支持&#xff0c;影…

2783: 【基础】小 X 玩游戏(game)

2783: 【基础】小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听完了故事&#xff0c;小 X 又想去玩一会儿游戏了。 这是一个很奇特的单机游戏&#xff0c; 游戏规则如下&#xff1a; 游戏中一共…

[CF1221E]Game With String

Game With String 题解 首先&#xff0c;我们可以发现不同的 . . .连续段之间是独立的&#xff0c;也就是说我们可以将原问题等价成多个连续 . . .游戏的 n i m nim nim和。 所以我们可以单独讨论连续段的状况的状况。 首先明确一个事实&#xff0c;由于 a > b a>b a&g…

Scratch编程与游戏之坦克炮弹V3!

注&#xff1a;这个游戏需要用到积木模块&#xff1a;动作、声音、控制、侦测&#xff08;用于判断炮弹伤害是否触及敌方&#xff09;、事件&#xff08;V3多了一个敌方坦克相关通知&#xff09;、变量&#xff08;控制双方血量&#xff09; 游戏要求&#xff1a;我们绘制一辆坦…

Win32游戏制作之---致我们曾经怀念的仙剑一

曾今有一个游戏是一代人的回忆&#xff0c;曾今有一部电视剧让很多人都落下了感动的泪&#xff01; 好久没有写博客了&#xff0c;前段时间准备考试&#xff0c;这段时间又忙着有事&#xff0c;所以博客很久没写了&#xff0c;这两天闲着&#xff0c;因此写一个小小的回…