Uva 10624 - Super Number
Problem B
Super Number
Input: Standard Input Output: Standard Output Time Limit: 3 Seconds
主要是还是效率问题,一般暴力就直接怎么想就怎么解决就行了,但这题死活都是TEL,用了long long超时,用了char型替换整型不超时,如此还是不懂 -_- Mark一下~~
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char digit[32]; int n, m; bool digit_mod(int k){ int sum = 0; for(int i=0; i<k; ++i){ sum = (sum*10+digit[i])%k; } if(sum == 0) return true; return false; } bool Traverse(int cur){ if(cur == m) return true; for(int i=0; i<=9; ++i){ digit[cur] = i; if(cur<n-1 || digit_mod(cur+1)){ if(Traverse(cur+1)) return true; } } return false; } int main(){ int t, times = 0; cin>>t; while(t--){ cin>>n>>m; memset(digit, 0, sizeof(digit)); bool flag = false; for(int i=1; i<=9 && flag == false; ++i){ digit[0] = i; flag = Traverse(1); } printf("Case %d: ", ++times); if(flag == false) printf("-1\n"); else{ for(int i=0; i<m; ++i){ printf("%c", digit[i]+'0'); } printf("\n"); } } return 0; }
![物役记](https://s2.ax1x.com/2019/05/26/VE5YD0.jpg)
更多内容请关注个人微信公众号 物役记 (微信号:materialchains)
作者:雪影蓝枫
本文版权归作者和博客园共有,欢迎转载,未经作者同意须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。