请教一下,for循环基础

问题遇到的现象和发生背景

for循环题目:

img


img

问题相关代码,请勿粘贴截图

#include <stdio.h>
int main(){
int a,n,i,m,s=0,p;
scanf("%d%d",&a,&n);
for (m=1;m<=n;m++){

for(i=1,p=0;i<=m;i++){
  p=p*10+a;
}
s=s+p;

}
printf("%d",s);
return 0;
}

运行结果及报错内容

只有“部分正确”

我的解答思路和尝试过的方法
我想要达到的结果

“答案正确”

用int不够大,s和p都需要改为long long类型,输出改用%lld输出

#include <stdio.h>
int main()
{
int a,n,i,m;
long long s=0,p;
scanf("%d%d",&a,&n);
for (m=1;m<=n;m++){
for(i=1,p=0;i<=m;i++){
  p=p*10+a;
}
s=s+p;
}
printf("%lld",s);
return 0;
}

s、p不能用int类型,要用long long

#include <stdio.h>
int main(){
    int a,n,i,m;
    long long s=0,p;
    scanf("%d%d",&a,&n);
    for (m=1;m<=n;m++){
        for(i=1,p=0;i<=m;i++){
          p=p*10+a;
        }
        s=s+p;
    }
    printf("%lld",s);
    return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
int a,n,m;
long long s=0;
long long sun=0;
scanf("%d%d",&a,&n);
for (m=0;m<n;m++)
{
    s=s+a*pow(10,m);
    sun=s+sun;
}
printf("%lld",sun);
return 0;
}