HPU 第三次积分赛:阶乘之和(水题)
阶乘之和
描述
对于整数pp,给出以下定义
p=x_{1}!+x_{2}!+x_{3}!+...+x_{q}!(x_{i}<x_{j}for\ all\ i<j )p=x1!+x2!+x3!+...+xq!(xi<xjfor all i<j)且x_{i} \neq 0xi≠0
((注释:p等于多个数的阶乘和,并且x_{1},x_{2},x_{3},...,x_{q}x1,x2,x3,...,xq为不相等的任意正整数,即组成p的阶乘不重复使用))
给定两个整数x,y,判断二者是否能满足以上定义。若二者都满足定义,设x由k_{1}k1个数的阶乘和组成,y由k_{2}k2个数的阶乘和组成,若k_{1}=k_{2}k1=k2,按下述输出格式输出二者的定义形式((输出时,阶乘按递增形式输出,例如:7=1!+3!))。
输入
第一行输入一个整数T,代表T组测试数据。(1\leq T \leq 10000)(1≤T≤10000)
接下来T行,每行包含两个整数x,y。(1\leq x,y \leq 10^{18})(1≤x,y≤1018)
输出
对于每组x,y输出包含两部分:
①如果二者都满足以上定义,输出“SEYES”;如果只有其一满足以上定义,输出“YNEOS”;如果二者都不满足以上定义,则输出“ONO”。
②当x,y都满足以上定义且k_{1}=k_{2}k1=k2时,输出二者的定义形式。否者输出“dWvWb”。
输入样例 1
4
7 7
1 2
4 2
4 4
输出样例 1
Case 1:SEYES
7=1!+3!
7=1!+3!
Case 2:SEYES
1=1!
2=2!
Case 3:YNEOS
dWvWb
Case 4:ONO
dWvWb
一道水题。一开始受Codeup 1085这道题的影响,一直从正向考虑,导致没有准确的思路。然后用了dfs,果断超时,加了剪枝之后时间并没有降下来QAQ,最后看了一下别人提交的代码,好短的代码长度,好快的运行时间QAQ。果断放弃之前的思路,从逆向考虑,马虎了一次后第二次就过了。
没想到这个题能卡三个小时,WA6发,果然前期太猛后期就萎了
AC代码
#include <bits/stdc++.h>
#define ll long long
#define ms(a) memset(a,0,sizeof(a));
#define pi acos(-1.0)
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=1e6+10;
const double E=exp(1);
ll a[maxn];
int b[maxn];
int c[maxn];
int vis[maxn];
int vis1[maxn];
int main(int argc, char const *argv[])
{
ios::sync_with_stdio(false);
a[1]=1;
// 打表记录阶乘
for(int i=2;i<=20;i++)
a[i]=a[i-1]*i;
int t;
int xx=0;
cin>>t;
ll x,y;
while(t--)
{
cin>>x>>y;
ll X=x;
ll Y=y;
int flag1=0,flag2=0;
int o1=0;
int o2=0;
ms(vis);
while(X)
{
for(int i=20;i>=1;i--)
{
if(X>=a[i])
{
b[o1++]=i;
vis[i]++;
}
if(X==0)
{
flag1=1;
break;
}
}
}
while(Y)
{
for(int i=20;i>=1;i--)
{
if(Y>=a[i])
{
vis1[i]++;
c[o2++]=i;
}
if(Y==0)
flag2=1;
}
}
sort(b,b+o1);
sort(c,c+o2);
int O1=o1,O2=o2;
// 去一下重吧,不知道为什么不去重会有重复元素
o1=unique(b,b+o1)-b;
o2=unique(c,c+o2)-c;
if(o1!=O1)
flag1=0;
if(o2!=O2)
flag2=0;
cout<<"Case "<<++xx<<":";
if(flag1+flag2==0)
cout<<"ONO\n"<<"dWvWb"<<endl;
if(flag1+flag2==2)
{
cout<<"SEYES"<<endl;
if(o1!=o2)
cout<<"dWvWb"<<endl;
else
{
cout<<x<<"=";
for(int i=0;i<o1;i++)
{
if(i)
cout<<"+";
cout<<b[i]<<"!";
}
cout<<endl;
cout<<y<<"=";
for(int i=0;i<o2;i++)
{
if(i)
cout<<"+";
cout<<c[i]<<"!";
}
cout<<endl;
}
}
if(flag2+flag1==1)
cout<<"YNEOS\n"<<"dWvWb"<<endl;
}
return 0;
}
HPU 第三次积分赛:阶乘之和(水题)的更多相关文章
- HPU第三次积分赛-D:Longest Increasing Subsequence(DP)
Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1,a2,a3,a4...an, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...
- CCF 201512-1 数位之和 (水题)
问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整数n. 输出格式 输出一个整数,表示答案. 样例输入 20151220 样例输出 13 样例说明 20151220的各位数字 ...
- nyoj 91 阶乘之和
点击打开链接 阶乘之和 时间限制:3000 ms | 内存限制:65535 KB 难度: 描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2 ...
- nyoj 91 阶乘之和(贪心)
阶乘之和 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3! ...
- ytu 1061: 从三个数中找出最大的数(水题,模板函数练习 + 宏定义练习)
1061: 从三个数中找出最大的数 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 124[Submit][Status][We ...
- ytu 1064: 输入三个字符串,按由小到大的顺序输出(水题,字符串处理)
1064: 输入三个字符串,按由小到大的顺序输出 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 471 Solved: 188[Submit][Sta ...
- ACM 阶乘之和
阶乘之和 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3! ...
- 阶乘之和--nyoj91
描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No: 输入 第一行有一个整数0<m<10 ...
- AC日记——阶乘之和 洛谷 P1009(高精度)
题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...
随机推荐
- 附加题找bug
private: void ReSize(int sz) { ) { return; } if(maxSize != sz) { T *arr = new T[sz]; if(arr == NULL) ...
- 当保存在Session中的对象,取出后,在外部发生改变时会怎样
return_reason_model model = new return_reason_model(); model.F_RetunrnReason = "; HttpContext.S ...
- Linux 下载最新kubectl版本的命令:
ubuntu centos下通用 第一步.下载最新版本的命令: curl -LO https://storage.googleapis.com/kubernetes-release/release/$ ...
- python-day29--socket
一 .客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 二. 三. 1.互联网协议就相当于计算机界的英语 2.数据传输的过程中包头一定要是固定的长度 四.socket层的位置 so ...
- 51nod-1605-博弈
1605 棋盘问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 上帝创造了一个n*m棋盘,每一个格子都只有可能是黑色或者白色的. 亚当和夏娃在 ...
- 河南省第十一届ACM大学生程序设计竞赛
nyoj-1365-山区修路 内存限制:128MB 时间限制:3000ms 特判: No通过数:4 提交数:4 难度:3 题目描述: SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间, ...
- [LeetCode] 268. Missing Number ☆(丢失的数字)
转载:http://www.cnblogs.com/grandyang/p/4756677.html Given an array containing n distinct numbers take ...
- libxl 的使用,读取时间格式
最近开发使用到 libxl,用的是3.8.0 破解版. 具体过程: 1.将lib.dll放在exe同目录下,在代码中引用 libxl.lib #pragma comment(lib, ".\ ...
- Spring Data JPA之@Query注解
比如有个实体类对象,类名为Book,对应数据表的表名为book 1. 一个使用@Query注解的简单例子:占位符?1和?2 @Query(value = "select name,autho ...
- DevExpress v18.1新版亮点——WinForms篇(六)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...