NC14976. 找数字个数
描述
lulu喜欢小于等于1000的正整数,但是如果某个数是a或b的倍数,lulu会讨厌这个数。如果某个数里包含了a和b两个数里包含的数,lulu也会讨厌。(例如a=14,b=23,如果数字中包含1、2、3、4这四个数中的任意一个数,lulu就会讨厌这个数)。现在告诉你a,b,你能说出lulu喜欢的数有多少个么。
输入描述
第一行是样例数T
第2到2+T-1行每行有2个整数a b。
输出描述
输出lulu喜欢的数的个数
示例1
输入:
3 2 3 14 23 1234 5678
输出:
171 190 7
说明:
a=1234 b=5678的时候,只考虑含有数字9,0的数,只有7个,分别是9,99,999,90,990,909,900C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 400K, 提交时间: 2019-11-11 09:50:18
#include<bits/stdc++.h> using namespace std; int t,a,b,sum; bool v[1010]; void js(int x){ while(x){ v[x%10]=1; x/=10; } } bool vn(int x){ while(x){ if(v[x%10])return 0; x/=10; } return 1; } int main(){ cin>>t; while(t--){ memset(v,0,sizeof v); sum=0; cin>>a>>b; js(a),js(b); for(int i=1;i<=1000;i++) if(i%a!=0&&i%b!=0&&vn(i)) sum++; cout<<sum<<endl; } return 0; }
pypy3 解法, 执行用时: 147ms, 内存消耗: 26612K, 提交时间: 2022-03-23 20:58:58
for z in range(int(input())): a,b= map(int,input().split()) c= list(str(a))+list(str(b)) t= 0 for i in range(1,1001): if i%a==0 or i%b==0: t+=1 else: for _ in c: if _ in str(i) : t+=1 break print(1000-t)
Python3(3.5.2) 解法, 执行用时: 89ms, 内存消耗: 3432K, 提交时间: 2018-01-21 14:35:19
T=int(input()) for i in range(T): ans=0 nums=input().split() a=nums[0];b=nums[1] N=set(a)|set(b) for j in range(1,1001): flag=1 for k in N: if k in str(j) or j%int(a)==0 or j%int(b)==0: flag=0 break ans+=flag print(ans)
Python(2.7.3) 解法, 执行用时: 90ms, 内存消耗: 5740K, 提交时间: 2018-01-21 14:49:33
for _ in xrange(input()): a, b = map(int, raw_input().split()) print len([n for n in xrange(1, 1001) if not ((not (n % a and n % b)) or set(str(n)) & (set(str(a)) | set(str(b))))])