湖南省第6回中信ソフトウェア教育杯大学生プログラム設計大会試験問題第3題デジタル除去



ディジタルせいげん
Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65536KB
Total submit users: 22, Accepted users:22
Problem 10932 : No special judgement
Problem description
定理:少なくとも2桁の正の整数の1桁の数字を除いて、残りの数から1桁の5倍を減算します.また、差が17の倍数である場合のみ、原数も17の倍数である.例えば、34は、3〜20=−17が17の倍数であるため、17の倍数である.201は17の倍数ではありません.20-5=15は17の倍数ではないからです.正の整数nを入力して、あなたの任務はそれが17の倍数であるかどうかを判断することです.
Input
入力ファイルには、最大10組のテストデータが含まれ、各データが1行を占め、1つの正の整数n(1<=n<=10100)のみが含まれ、判断すべき正の整数を表す.n=0は入力が終了したことを示し、あなたのプログラムはこの行を処理すべきではありません.
Output
各テストデータのセットについて、対応するnが17の倍数であるか否かを示す行が出力される.1はYes、0はNoを表します.
Sample Input
34 201 2098765413 1717171717171717171717171717171717171717171717171718 0
Sample Output
1 0 1 0
Problem Source
  The Sixth Hunan Collegiate Programming Contest 
 
 
タイトル接続:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10932
 
分析:简単な大数の操作、习惯によって私はJAVAを使うことが好きです
ソース:
 
import java.math.BigInteger;

import java.util.Scanner;

 

// ACM 

public class Main {

 

   public static void main(String[] args) {

 

      Scanner scanner = new Scanner(System.in);

 

      while (scanner.hasNext()) {

 

        String str = scanner.next();

 

        if (str.equals("0")) {// endWith WA , 

           break;

        }

        int len = str.length();

        String aStr = str.substring(0, len - 1);

        String bStr = str.substring(len - 1);

 

        BigInteger num = new BigInteger(str);//  

        BigInteger a = new BigInteger(aStr);

        BigInteger b = new BigInteger(bStr);

 

        BigInteger n = BigInteger.valueOf(5);

 

        BigInteger temp = b.multiply(n);//  5 

 

        // System.out.println(temp);

 

        BigInteger r = a.subtract(temp);//  5* 

 

        // System.out.println(r);

 

        r = r.abs();//  

 

        // System.out.println(r);

 

        BigInteger m = BigInteger.valueOf(17);

        // System.out.println(m);

 

        // System.out.println(r.mod(m));

        if (r.mod(m).compareTo(BigInteger.valueOf(0)) == 0

              && num.mod(m).compareTo(BigInteger.valueOf(0)) == 0) {

           System.out.println(1);

        } else {

           System.out.println(0);

        }

      }

   }

 

}