火题大战Vol.1 A.

题目描述

给定两个数\(x\),\(y\),比较\(x^y\) 与\(y!\)的大小。

输入格式

第一行一个整数\(T\)表示数据组数。

接下来\(T\)行,每行两个整数\(x\),\(y\),表示\(T\)组数据。

输出格式

输出有\(T\)行,对于每一组数据,如果\(x^y \leq y!\)

输出 \(Yes\),否则输出\(No\)。

样例

样例输入

3

1 4

2 4

3 4

样例输出

Yes

Yes

No

样例输入

5

50 100

37 100

200 1000

400 1000

20000 100000

样例输出

No

Yes

Yes

No

Yes

数据范围与提示

对于\(50\%\)的数据满足\(x \leq 8\),\(y \leq 10\)。

对于\(80\%\)的数据满足\(x\),\(y \leq 300\) 。

对于\(100\%\)的数据满足\(x\),\(y \leq 10^5\),\(T \leq 5\)。

分析

做法一:

比较套路,因为我们只需要比较数的大小,所以我们将\(a \times b\)转化为 \(log(a)+log(b)\)

代码

#include<bits/stdc++.h>
using namespace std;
typedef double db;
const double lqs=1e-9;
const int maxn=1e6+5;
db lg[maxn];
int main(){
int t;
scanf("%d",&t);
for(int i=1;i<maxn;i++){
lg[i]=log2(i);
}
while(t--){
int xx,yy;
scanf("%d%d",&xx,&yy);
double ans1=0,ans2=0;
for(int i=1;i<=yy;i++){
ans1=ans1+lg[xx];
}
for(int i=1;i<=yy;i++){
ans2=ans2+lg[i];
}
if(ans1-ans2>lqs) printf("No\n");
else printf("Yes\n");
}
return 0;
}

做法二

压位高精,但是因为博主比较菜,所以只能得到\(80\)分

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+5;
const int bas=1000;
struct bigint{
int a[maxn],len;
bigint(){
memset(a,0,sizeof(a));
len=0;
}
void qk(){
for(int i=1;i<=len;i++) a[i]=0;
len=0;
}
void Read(int aa){
while(aa){
a[++len]=aa%bas;
aa/=bas;
}
}
bigint operator *(const bigint &A)const{
bigint C;
C.len=A.len+len;
for(int i=1;i<=A.len;i++){
for(int j=1;j<=len;j++){
C.a[i+j-1]+=A.a[i]*a[j];
}
}
for(int i=1;i<=C.len;i++){
if(C.a[i]>=bas){
int cz=C.a[i]/bas;
C.a[i+1]+=cz;
C.a[i]%=bas;
}
}
if(C.a[C.len+1]) C.len++;
while(C.a[C.len]==0) C.len--;
return C;
}
void Write(){
for(int i=len;i>=1;i--){
printf("%.4d",a[i]);
}
printf("\n");
}
}ansa,ansb,zh;
int main(){
int t;
scanf("%d",&t);
while(t--){
int xx,yy;
scanf("%d%d",&xx,&yy);
ansa.qk(),ansb.qk();
ansa.Read(xx);
zh.qk();
zh.Read(xx);
for(int i=1;i<yy;i++){
ansa=ansa*zh;
}
ansb.Read(yy);
for(int i=1;i<yy;i++){
zh.qk();
zh.Read(i);
ansb=ansb*zh;
}
bool jud=0;
if(ansa.len>ansb.len){
printf("No\n");
jud=1;
}
else if(ansa.len<ansb.len){
printf("Yes\n");
jud=1;
}
else {
for(int i=ansa.len;i>=1;i--){
if(ansa.a[i]>ansb.a[i]){
printf("No\n");
jud=1;
break;
}
else if(ansa.a[i]<ansb.a[i]){
printf("Yes\n");
jud=1;
break;
}
}
if(jud==0)printf("Yes\n");
}
}
return 0;
}

火题大战Vol.1 A.的更多相关文章

  1. 火题大战Vol.0 B 计数DP

    火题大战Vol.0 B 题目描述 \(n\) 个沙茶,被编号 \(1\)~$ n$.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 \(1\)(\(+1\) 或\(-1 ...

  2. 水题大战Vol.3 B. DP搬运工2

    水题大战Vol.3 B. DP搬运工2 题目描述 给你\(n,K\),求有多少个\(1\)到\(n\) 的排列,恰好有\(K\)个数\(i\) 满足\(a_{i-1},a_{i+1}\) 都小于\(a ...

  3. 金题大战Vol.0 A、凉宫春日的叹息

    金题大战Vol.0 A.凉宫春日的叹息 题目描述 给定一个数组,将其所有子区间的和从小到大排序,求第 \(k\) 小的是多少. 输入格式 第一行两个数\(n\),$ k\(,表示数组的长度和\)k$: ...

  4. 金题大战Vol.0 B、序列

    金题大战Vol.0 B.序列 题目描述 给定两个长度为 \(n\) 的序列\(a\), \(b\). 你需要选择一个区间\([l,r]\),使得\(a_l+-+a_r>=0\)且\(b_l+-+ ...

  5. 金题大战Vol.0 C、树上的等差数列

    金题大战Vol.0 C.树上的等差数列 题目描述 给定一棵包含\(N\)个节点的无根树,节点编号\(1-N\).其中每个节点都具有一个权值,第\(i\)个节点的权值是\(A_i\). 小\(Hi\)希 ...

  6. 土题大战Vol.0 A. 笨小猴 思维好题

    土题大战Vol.0 A. 笨小猴 思维好题 题目描述 驴蛋蛋有 \(2n + 1\) 张 \(4\) 星武器卡片,每张卡片上都有两个数字,第 \(i\) 张卡片上的两个数字分别是 \(A_i\) 与 ...

  7. [火星补锅] 水题大战Vol.2 T2 && luogu P3623 [APIO2008]免费道路 题解

    前言: 如果我自己写的话,或许能想出来正解,但是多半会因为整不出正确性而弃掉. 解析: 这题算是对Kruskal的熟练运用吧. 要求一颗生成树.也就是说,最后的边数是确定的. 首先我们容易想到一个策略 ...

  8. [火星补锅] 水题大战Vol.2 T1 && luogu P1904 天际线 题解 (线段树)

    前言: 当时考场上并没有想出来...后来也是看了题解才明白 解析: 大家(除了我)都知道,奇点和偶点会成对出现,而出现的前提就是建筑的高度突然发生变化.(这个性质挺重要的,我之前没看出来) 所以就可以 ...

  9. # 火题小战 A.玩个球

    火题小战 A.玩个球 题目描述 给你 \(n\) 种颜色的球,每个球有 \(k\) 个,把这 \(n\times k\) 个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多 ...

随机推荐

  1. 题解 洛谷 P3340 【[ZJOI2014]星系调查】

    根据题意,发现题目中的图,其实就是一颗树或者是一颗基环树,每个节点上有一个点对\((x,y)\),每次询问为给定端点,找一条直线到端点间的所有点的距离之和最小. 设这条直线为\(y=kx+b\),根据 ...

  2. 题解 洛谷 P3185 【[HNOI2007]分裂游戏】

    首先可以发现,当所有巧克力豆在最后一个瓶子中时,就无法再操作了,此时为必败状态. 注意到,对于每个瓶子里的巧克力豆,是可以在模\(2\)的意义下去考虑的,因为后手可以模仿先手的操作,所以就将巧克力豆个 ...

  3. MySQL操作数据库

    2.操作数据库 操作数据库>操作数据库中的表>操作表中的数据 Mysql关键字不区分大小写 2.1操作数据库 2.1.1创建数据库  create database if not EXIS ...

  4. python处理excel文件(xls和xlsx)

    一.xlrd和xlwt 使用之前需要先安装,windows上如果直接在cmd中运行python则需要先执行pip3 install xlrd和pip3 install xlwt,如果使用pycharm ...

  5. bootstrap-treeview 研究一下

    一直以来都是拿来主义,现在正好有空,也正好用到,准备好好研究下bootstrap-treeview. 实现目标:可搜索,可复选选中的权限控制菜单项. 研究失败 转 jstree

  6. gerrit安装指南

    Gerrit的基本介绍 Gerrit 是一个Git服务器,它基于 git 版本控制系统,使用网页界面来进行审阅工作.Gerrit 旨在提供一个轻量级框架,用于在代码入库之前对每个提交进行审阅,更改将上 ...

  7. Seaborn基础3

    import seaborn as sns import numpy as np import matplotlib.pyplot as plt sns.set(rc = {"figure. ...

  8. Vue笔记(有点乱)

    Vue学习笔记(2019.7.31) 目录 Vue学习笔记(2019.7.31) vue 基本指令用法 v-cloak v-text v-html v-bind v-on 跑马灯 v-on v-mod ...

  9. [转]为什么阿里巴巴要禁用Executors创建线程池?

    作者:何甜甜在吗 链接:https://juejin.im/post/5dc41c165188257bad4d9e69 来源:掘金 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executo ...

  10. log4net用法实例

    内容转载自:https://www.cnblogs.com/youring2/archive/2011/04/27/2030424.html 1.引用log4net.dll 2.在AssemblyIn ...