阶乘之和

描述

对于整数pp,给出以下定义
p=x_{1}!+x_{2}!+x_{3}!+...+x_{q}!(x_{i}<x_{j}for\ all\ i<j )p=x1​!+x2​!+x3​!+...+xq​!(xi​<xj​for 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;
}

转载于:https://www.cnblogs.com/Friends-A/p/10324410.html

HPU 第三次积分赛:阶乘之和(水题)相关推荐

  1. HPU第三次积分赛-D:Longest Increasing Subsequence(DP)

    Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1​,a2​,a3​,a4​...an​, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...

  2. C - 数据结构实验之排序三:bucket sort(水题)

    Description 根据人口普查结果,知道目前淄博市大约500万人口,你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人,其中不满1周岁的按0岁计算,1到2周岁的按1岁计算,依次类推 ...

  3. C语言 1A gt $20,C语言输出 1到20 的阶乘之和

    除了调用库,绝对找不到比这更精简的代码了. #include #include long long getdata(long long n){ long long sum = 1; while(n){ ...

  4. 用Java求一个三位数,该三位数是与其每位数字的阶乘之和

    题目:一个三位数,该三位数与其每位数字的阶乘之和 代码: public class TestSum {public static void main(String[] args) {int a, b, ...

  5. Java- 求⼀个三位数,该三位数等与其每位数字的阶乘之和

    求⼀个三位数,该三位数等与其每位数字的阶乘之和. import java.util.Scanner; public class Demo {public static void main(String ...

  6. 阶乘求和 C语言实现求阶乘之和 三种方法实现 先阶乘再累加

    题目: 此处题目是以1-20的阶乘之和举例 方法一:使用一层for循环实现 代码简单快捷容易理解 代码示例如下: #include<stdio.h> int main() {double ...

  7. 求一个三位数 其值等于其各位阶乘之和 c语言,求一个三位数,其值等于其各位阶乘之和...

    写在前面: 题解是对具体题目的编程实现,不会具体讲解C语言语法.请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~).在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以 ...

  8. 如何用Python编写一个求 1到n阶乘之和的程序

    各位许久不见了,甚是想念! 前段时间我进入高中阶段学习,一直还没有适应,现在好些了就继续写博客了. 看到很多人关注我,点赞或是评论,我感觉太高兴了! C语言这块我暂时先放下了,我想自己学学Python ...

  9. C++和C语言求解一个数的阶乘以及多个数的阶乘之和

    第一个问题,求解一个数的阶乘,一个数的阶乘等于从它本身一直乘到1. 以下为源代码: 第二个问题:求多个数的阶乘之和,通过上面的代码,我们已经会求解一个数的阶乘,那么多个数的阶乘我们只需要再加一个循环, ...

最新文章

  1. zlib 离线安装_黑板派Python扩展库安装与常见问题解决完整指南
  2. html select显示树形菜单_HTML标签总结
  3. 【今日CS 视觉论文速览】20 Dec 2018
  4. linux cat 递归目录,实验二 linux文件目录操作
  5. kafka----zookepeer
  6. linux判断redis是否启动成功_redis的前生后世
  7. c语言gettop函数值,数据结构-栈 C和C++的实现
  8. 【BFS】LeetCode 130. Surrounded Regions
  9. (译)我的第一游戏完成之后的5点心得体会
  10. 串行设备造成鼠标乱跑的问题
  11. 【我看Spring】从一个简单的AOP示例看切面编程
  12. List工具类之List集合去重
  13. openwrt路由器变网桥设备交换机,还能当服务器部署NAS私有云
  14. 认识即时通讯开发通信协议之MQTT
  15. flask 蓝本(blueprint)
  16. V831基础-UART
  17. 土拨鼠之日(偷天情缘)
  18. 数据比赛资料(杂合)
  19. 2020北航计算机夏令营机试题目讲解
  20. 最新Java面试真题,备战金九银十。

热门文章

  1. 大文本存mysql怎么建索引_如何正确合理的建立MYSQL数据库索引
  2. python下载源_python解决使用镜像源来安装包
  3. 如何测试程序是否_软件开发过程中,如何进行自动化测试?Unit Test 和 UI Test
  4. 大数据 -- kafka学习笔记:知识点整理(部分转载)
  5. Hibernate:组合模式解决树的映射
  6. Java开发笔记(一百零三)线程间的通信方式
  7. Odoo访问权限(一)
  8. BZOJ1835: [ZJOI2010]base 基站选址(线段树优化Dp)
  9. 实验3.1 简单实现Intent带返回值的跳转
  10. DailyRollingFileAppender-设置文件大小和备份数