spoj http://www.spoj.com/problems/JULKA/


    //explain below for loop what is actually being done in this loop//
     for(i=k-1, j=a=f=0; i>=0; i--)
     {
         b = (a*10 + temp[i]-'0') / 2; //explain
         a = (a*10 + temp[i]-'0') % 2;//explain
        if(b) f = 1;//explain
        if(f) klaudia[j++] = b+'0';//explain
    }
     if(!j) j++;//explain
     klaudia[j] = 0;//explain
     for(i=len1-1, j=len2-1, k=c=0; i>=0; i--, j--, k++)
     {
         a = total[i]-'0';//explain
         b = j>=0? diff[j]-'0' : 0;//explain
        if(a < b+c)
       {
             temp[k] = (10+a-b-c) + '0';//explain
             c = 1;//explain           }
        else
       {
          temp[k] = a-b-c + '0';//explain
          c = 0;//explain
       }
  }
  temp[k] = 0;//explain

解释在上面的两个 for 循环中正在做什么,为什么我们要除以和调制 2。 加 0 的意义是什么

第一个循环是将 temp[] 中表示为字符串的十进制数除以 2。/2 实际上是将一个数字除以 2,%2 是将余数应用于下一个数字 - 这就是为什么它随后乘以 10。

"0"的加法和减法用于将原始数字与其 ASCII 表示形式之间的个位数转换为字符。

最新更新