好久没有发题解了,今天发一个很久很久之前写过得题吧
题目其实莫名的难
但是理解后,原来就是一只纸老虎
题目加工中~~~~(缩短题目)
加工完成:已知数字1-9组成集合的一个子集,求满足题意乘法步骤的情况有多少,注意乘数、被乘数、结果都不能超出位数,且每个数字都在题目给出的子集中。
其实就是上面这样。
其实一波暴力即可
循环1-9位数,进行计算,可以就可以,不可以就跳过,但是要注意是个,十,百....的起点,如百的起点是100;
大水题
上代码吧
#include<iostream> #include<cstdio> using namespace std; int p,u; int t1,t2,t3; int n,l=0; int a[10]; bool nt[10]; int t(int x) { while(x) { if(!nt[x % 10]) return 0; x/=10; } return 1; } int main() { // freopen("crypt1.in","r",stdin); // freopen("crypt1.out","w",stdout); cin>>n; for(int i=1; i<=n; i++) { cin>>a[i]; nt[a[i]] = 1; } for (int i=100; i<=999; i++) { for(int j=10; j<=99; j++) { t1=(j % 10) * i; t2=(j / 10) * i; t3=t1+t2*10; if (t1<1000&&t1>=100&&t2>=100&&t2<1000&&t3>=1000&&t3<10000&&t(t1)&&t(t2)&&t(t3)&&t(i)&&t(j)) { l++; } } } cout<<l; }
原文地址:https://www.cnblogs.com/WestJackson/p/11344934.html
时间: 2024-10-16 19:29:02