1.每個位數都檢查 carry + a%10 + b%10是否大於10就能解決這題。
2.測資小於10位數,所以 int就很夠用。不需要 long long更不用大數加法。
3.output的 operations 的單、複數型要注意
網址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&page=show_problem&problem=976
---------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, carry_digit, carry;
while( (scanf("%d%d", &a, &b) == 2) && (a || b) )
{
carry_digit = 0, carry = 0;
for(; a || b; )
{
carry += a%10 + b%10;
if(carry >= 10)
carry_digit++;
carry /= 10, a /= 10, b /= 10;
}
if(!carry_digit)
printf("No ");
else
printf("%d ", carry_digit);
printf("carry operation%s.\n", carry_digit > 1 ? "s" : "");
}
return 0;
}
-2017-05-22------------------------------------------------------------------
import java.util.*;
public class main{
public static void main(String[] args) {
try{
int numA,numB;
Scanner in=new Scanner(System.in);
while(in.hasNextInt()){
int carry = 0, carryTimes = 0;
numA = in.nextInt();
numB = in.nextInt();
if(numA == 0 && numB == 0){
break;
}
while(numA > 0 || numB > 0){
if( (carry + numA % 10 + numB % 10) >= 10){
carryTimes++;
carry = (carry + numA % 10 + numB % 10) / 10;
}
else{
carry = 0;
}
numA /= 10;
numB /= 10;
}
if(carryTimes == 0){
System.out.println("No carry operation.");
}
else if(carryTimes == 1){
System.out.println("1 carry operation.");
}
else{
System.out.println("" + carryTimes + " carry operations.");
}
}
in.close();
}catch(Exception e){
System.out.println("Input error!");
}
}
};