首页 > 其他分享 >AcWing 1209. 带分数

AcWing 1209. 带分数

时间:2022-10-30 10:12:04浏览次数:67  
标签:10 1209 int long 带分数 枚举 Byte include AcWing

题目条件:
image

  1. 枚举全排列,是9个数
    image

  2. a,b,c的位数都还不知道
    枚举a,b,c的位数,枚举a和b的位数 ,c=9-a-b

  3. 判断等式是否成立

//  暴力dfs
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int cnt; //输出方案
long long a,b,c;
int path[9];  // 路径
bool st[9];  // 状态
//  条件 n= a+ b/c;  转换为: n*c =a*c +b



// 数组path元素拼接在一起构成整数
int array_to_nums(int l,int r){
  int res=0;
  for(int i=l;i<=r;i++){
    res=res*10+path[i];
  }
  return res;
}

// 全排列9个数
void dfs(int u){
  //  输出组合的一种情况
  if(u>9){  
    for(int i=1;i<=7;i++){          // i的范围 1——7
      for(int j=i+1;j<=8;j++){      // j的范围 i+1 ——8
        int a=array_to_nums(1,i);  // 数组元素拼接在一起构成整数a
        int b=array_to_nums(i+1,j);  //数组元素拼接在一起构成整数a
        int c=array_to_nums(j+1,9); 
        // 满足题目条件时,输出
        if(c*n == a*c+b){
          cnt++;  // 表示方法加1
        }
      }
    }
    return ;
  }
  for(int i=1;i<=9;i++){
    if(!st[i]){
      st[i]=true;
      path[u]=i;
      dfs(u+1);
      st[i]=false;
      path[u]=0;
    }
  }

  
}

int main(){
  cin>>n; // 读入一个整数
  dfs(1);
  cout<<cnt;
  return 0;
}

补充: 计算程序的空间复杂度

int 占4个Byte
char 占 1个Byte
long long 占8 Byte
float 占4 Byte

1 Byte =8 bit
简写: 1B =8位

1MB =2^10KB
1KB =2^10B
64MB = 64 * 2^ 20B

2^20 约等于 10的6次方
2^10 约等于10 的3次方

标签:10,1209,int,long,带分数,枚举,Byte,include,AcWing
From: https://www.cnblogs.com/mengfengguang/p/16840570.html

相关文章

  • acwing第75场周赛
    这次题比较水,但是还是没能ak,自己小结一下吧第一道题就是自己枚举相加就行第二道题是一个多关键字排序,wa了几次,是因为优先级有两个是相同的需要特判一下,然后可以把字符转......
  • AcWing 1113. 红与黑
    蒟蒻只会暴搜了要点是先找到起点,从起点开始向各个方向搜DFS:(DFS当然也可以用for(inti=0;i,4;i++)来搜索四个方向,这里是个人习惯)#include<iostream>#include<cstring......
  • 803. 区间合并Acwing
    #include<iostream>#include<algorithm>#include<vector>usingnamespacestd;intn;intl,r;typedefpair<int,int>PII;vector<PII>ses;voidm(vector<PII>&segs......
  • 801. 二进制中1的个数Acwing
    #include<iostream>usingnamespacestd;constintN=1e5+10;intq[N];intlow(intx){returnx&(-x);}intmain(){intn;cin>>n;for(inti=0;......
  • 802. 区间和Acwing
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;typedefpair<int,int>PII2;vector<int>q;vector<PII2>PII,PII1;constintN=3e5+10......
  • 高精度HighAccuracy_acwing.cpp
    ​​​ 文章:    力扣模板:字符串相加-字符串相加-力扣(LeetCode)    acwing模板:常用代码模板1——基础算法-AcWing 例题:        P100......
  • AcWing 93. 递归实现组合型枚举
    #include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=30;//多开几个,防止边界越界intn,m;intway[N];//表示方案//......
  • AcWing 94. 递归实现排列型枚举
    #include<iostream>#include<cstring>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=10;intn;intpath[N];//0表示没有放数,1-n表示......
  • AcWing 92. 递归实现指数型枚举
    题解1:#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=16;intn;boolst[N];//false不选,true选voiddfs(intu){......
  • AcWing1069.凸多边形的划分(区间DP)
    SLOJP2067.三角剖分问题AcWing1069.凸多边形的划分(区间DP)题目描述给定由N顶点组成的凸多边形每个顶点具有权值将凸N边形剖分成N-2个三角形求N-2个三角形......