快速幂,请问这个第17行开始的循环怎么写

b很大,被存放在数组里,我的想法是,一开始对个位减一,如果个位为零,就将个位为9,对十位减一,如果十位不够减,就对百位减1,但是我不会写这个循环。

img

img


#include <stdio.h>
#include <string.h>
const int N=1337;
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
char s[100]={0};
scanf("%s",s);
int i,j,b[100]={0};
for(i=0;i<strlen(s);i++)
{
b[i]=s[i]-'0';
}
int ans=1;
for(i=strlen(s)-1;i>=0;)
{

            while(b[i])
            {
                b[i]--;
                ans=(ans*a)%N;
            }
            if(i-1)
            {
                b[i]=9;
                b[i-1]--;
            }
            else
                i--;    
    }
    
    printf("%d\n",ans);        
}    
return 0;

}