#UVa:10994-Simple Addition

灆洢 2012-03-31 09:36:01

其實只要看題目推敲一下,大概可以知道其實就是各個數字最低階不是0的數字的總和。

可將題目要加的拆成各個位數來做,每一個位數都要考慮%10和/10的情況要加多少,將這些值全部加起來即可得解。

P.S. 雖然p,q可以在32bits整數下存放,但可沒說總和也可以喔!

C++(0.012)

/*******************************************************/
/* UVa 10994 Simple Addition                           */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2012/03/31                                 */
/*******************************************************/
#include<iostream>
#include<cstdio>
using namespace std;

int main(){
  long long p, q;
  long long sum;

  while( scanf( "%lld%lld", &p, &q ) != EOF && !( p < 0 && q < 0 )){
    sum = 0;

    while( p || q ){
      sum += (q%10+p%10)*((q%10)-(p%10)+1)/2;
      sum += (q/10-p/10)*45;

      if( p%10 && (p/10 || q/10) ) p += 10;
      p /= 10;
      q /= 10;
    }

    printf( "%lld\n", sum );
  }
  return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料