题目是:Alice喜欢n位数,Bob喜欢能被m整除的数,请问被Alice和Bob都喜欢的数有多少个?
我最开始给出的答案是:
#include<stdio.h>
#include<math.h>
int main()
{
int i,k;
scanf("%d",&k);
while(k--)
{
int n,m;
scanf("%d%d",&n,&m);
int n1,m1;
if(n==1)
{
n1=0;
m1=9;
}
else
{
n1=1;
m1=1;
for(i=1;i<n;i++){
n1*=10;
}
for(i=1;i<n+1;i++){
m1*=10;
}
m1=m1-1;
}
int num=0;
for(i=n1;i<=m1;i++)
{
if(i%m==0)
num++;
}
printf("%d",num);
}
}
结果显示: Time Limit Exceed
我尝试用while替换for循环:
#include<stdio.h>
#include<math.h>
int main()
{
int i,k;
scanf("%d",&k);
while(k--)
{
int n,m;
scanf("%d%d",&n,&m);
int n1,m1;
if(n==1)
{
n1=0;
m1=9;
}
else
{
n1=1;
m1=1;
int num=n+1;
while(n--){
n1*=10;
}
while(num--){
m1*=10;
}
m1=m1-1;
}
int num=0;
for(i=n1;i<=m1;i++)
{
if(i%m==0)
num++;
}
printf("%d",num);
}
}
但是还是显示超时,想问该怎么改?