解题思路:
看到题后,直接想到分成两种情况:
①:a*b >9
这里又分成两种
1. n==1 a*b 直接是一个两位数 求得十位和个位(这里十位和个位不可能相等) 然后如果等于d 则结果=1
2. n>1
直接分析 a*b aa*b aaa*b aaaa*b的结果
6 * 8 = 48
66 * 8 = 528
666 * 8 = 5328
6666 * 8 =53328
...... * 8 = 5....328
所以可以看出结果
只需求出 个位 十位 百位 和最高位即可
②:a*b <=9
判定 a*b 是否 == d 即可
不等于 ans=0
等于 ans=n
Ac code:
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,d,n;
scanf("%d%d%d%d",&a,&b,&d,&n);
if(a*b<=)
{
printf("%d\n",a*b%==d?n:);
}
else
{
int ans=;
if(n!=)
{
int k=(a*+a*+a)*b;
if(k%==d)ans++;
if(k/%==d)ans++;
if(k/%==d)ans+=n-;
if(k/==d)ans++; }
else
{
if(a*b%==d||a*b/==d)ans++;
}
printf("%d\n",ans);
}
}
return ;
}