zoukankan      html  css  js  c++  java
  • UVA10624

    题目:UVA10624 - Super Number(dfs)


    题目大意:给你n和m要求找出这种m位数,从第n位到第m位都满足前i位是能够被i整除,假设没有这种数,输出-1.有多个就输出字典序最小的那个。


    解题思路:将每一个位置都用0..9枚举一下,注意第一个字符不能是0,然后dfs推断每一个位置是否都满足要求。注意这里是会爆long long的,所以要取模一下。本来以为这种做法会超时的,结果居然过了,预计是例子数少,并且找不到的情况也比較少。


    代码:

    #include <cstdio>
    #include <cstring>
    
    const int N = 35;
    typedef unsigned long long ll;
    
    int num[N];
    int m, n;
    
    bool judge (int cur) {
    
    	ll sum = 0;
    	for (int i = 0; i <= cur; i++) {
    		sum = sum * 10 + num[i];
    		if (i > 17)
    			sum = sum % (cur + 1);
    	}
    	sum = sum % (cur + 1);
    	return sum ?

    false : true; } bool dfs (int cur) { if (cur == m) return true; for (int i = 0; i < 10; i++) { if (!cur && !i) continue; num[cur] = i; if (cur < n - 1 || judge(cur)) { if (dfs (cur + 1)) return true; } } return false; } int main () { int t; scanf ("%d", &t); for (int i = 1; i <= t; i++) { scanf ("%d%d", &n, &m); printf ("Case %d: ", i); if (!dfs(0)) printf ("-1 "); else { for (int j = 0; j < m; j++) printf ("%d", num[j]); printf (" "); } } return 0; }



  • 相关阅读:
    关于shell输出的一些问题
    python一些问题
    excel
    梁先生家书摘录
    使用conda安装requirement.txt指定的依赖包
    Matplotlib 的默认颜色 以及 使用调色盘调整颜色
    各种 Shell 的使用
    将实验数据保存到txt文件中
    机器学习-学习资源
    Gvim 的使用
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6727266.html
Copyright © 2011-2022 走看看