STL自带下一个全排列 比手写的快。。。
/************************************************************** Problem: 1072 User: lxy8584099 Language: C++ Result: Accepted Time:2688 ms Memory:820 kb ****************************************************************/ /* 全排列最大 3628800 可以搜索 然后判断 */ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int T,p,len,a[15]; char s[15]; int main() { scanf("%d",&T); while(T--) { scanf("%s",s+1); len=strlen(s+1); for(int i=1;i<=len;i++) a[i]=s[i]-'0'; sort(a+1,a+len+1); scanf("%d",&p); int ans=0; do { long long all=0; for(int i=1;i<=len;i++) all=all*10+a[i]; if(all%p==0) ans++; } while(next_permutation(a+1,a+len+1)); printf("%d\n",ans); } return 0; }