• 题意:给你四个数字,你可以用这四个数字凑出四个1位数,一个2位数和两个1位数,或一个3位数和一个1位数,你可以用你凑出的数字进行\(+,-,x\)运算(所有运算符号至少出现一次),问你一共能得到多少个不同的数字.
  • 题解:dfs瞎搞,不合法乘法的细节特别多,在dfs函数里面用flag和mult来分别去除出现\((a+b)*c\)和\((a*b)*10\)的情况.
  • 代码:
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define me memset
#define rep(a,b,c) for(int a=b;a<=c;++a)
#define per(a,b,c) for(int a=b;a>=c;--a)
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b) {return a/gcd(a,b)*b;} int a[10];
bool st[10];
bool vis[N]; void dfs(int t,int sum,int flag,int mult){ if(t==4){
vis[sum]=true;
return;
} int mul=1;
vector<int> v; rep(i,1,4){
if(!st[i]){
if(t==2) v.pb(a[i]);
mul*=a[i];
}
} if(t==2){
int cnt1=v[0]*10+v[1];
int cnt2=v[1]*10+v[0];
if(!flag){
vis[sum*cnt1]=true;
vis[sum*cnt2]=true;
vis[sum+cnt1]=true;
vis[sum+cnt2]=true;
}
vis[abs(sum-cnt1)]=true;
vis[abs(sum-cnt2)]=true;
} vis[sum+mul]=true;
if(sum-mul>=0) vis[sum-mul]=true;
if(!flag) vis[sum*mul]=true; rep(i,1,4){
if(!st[i]){
st[i]=true;
dfs(t+1,sum+a[i],1,0);
if(sum-a[i]>=0) dfs(t+1,sum-a[i],1,0); if(!flag) dfs(t+1,sum*a[i],0,1); if(!flag && t<3 && !mult)
dfs(t+1,sum*10+a[i],0,0); st[i]=false;
}
} } int main() {
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>a[1]>>a[2]>>a[3]>>a[4]; rep(i,1,4){
me(st,false,sizeof(st));
st[i]=true;
dfs(1,a[i],0,0);
} int ans=0; rep(i,0,100000){
if(vis[i]){
ans++;
}
} cout<<ans<<'\n'; return 0;
}

最新文章

  1. 64位计算机安装setuptool
  2. IIS发布网站遇到的异常
  3. mysql 中execute、executeQuery和executeUpdate之间的区别
  4. mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. ->
  5. pygame简单动态图 &amp; 动态图片的移动
  6. 阻止IOS自动识别页面上的电话号码、email地址
  7. BZOJ 2427: [HAOI2010]软件安装( dp )
  8. ERROR: Error in Log_event::read_log_event(): &#39;read error&#39;, data_len: 438, event_type: 2
  9. CopyOnWriteArrayList实现原理及源码分析
  10. linux下执行sh脚本,提示Command not found解决办法
  11. jstack 使用一例
  12. 2018-2019-2 网络对抗技术 20165320 Exp5 MSF基础应用
  13. DataRow 点不出 Select
  14. Linux 虚拟机VMware安装失败,提示没有选择磁盘
  15. 织梦栏目判断 seotitle的小bug
  16. STS-创建spring配置文件
  17. Redis 操作哈希数据
  18. DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定
  19. C#中的静态构造函数
  20. 调用ajax的返回值,需要再ajax之外的函数体里return,以及同步异步问题

热门文章

  1. 爬虫-urllib3模块的使用
  2. 【Linux】cp命令的各种妙用
  3. 【Oracle】如果有一个Oracle中的用户,想知道他有什么权限,怎么查看?
  4. ActiceMQ详解
  5. Redis 实战 —— 02. Redis 简单实践 - 文章投票
  6. LR 场景中Windows资源配置设置
  7. Java编程技术之浅析SPI服务发现机制
  8. TCP为什么要三次握手与四次分手?
  9. : cannot validate certificate for 127.0.0.1 because it doesn&#39;t contain any IP SANs
  10. 就是通过事件方法,在window.loaction.href里追加了参数字符串