zoukankan      html  css  js  c++  java
  • lightoj 1214

    lightoj 1214 Large Division  (大数除法)

    链接:http://www.lightoj.com/volume_showproblem.php?problem=1214

    题意:给定 a, b 两个数,判断 a 是否整除 b 。(a 为 大数)

    思路: 用字符串存 a ,转化为 整型数组,用除法原理进行处理,没什么难度。其中关键是负号的处理。

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 #include <vector>
     7 using namespace std;
     8 
     9 typedef long long LL;
    10 LL b, x, y;
    11 char ar[202];  // a
    12 int nu[202];    //把 a 字符转化为数字
    13 
    14 bool option()
    15 {
    16     int i = 0, j;
    17     int len = strlen(ar);       //a 的长度
    18     if(ar[0] == '-')  len--, i = 1; //去掉 a 的‘-’号
    19     for(j = 0; ar[i]; ++j, ++i)   //转化
    20         nu[j] = ar[i] - '0';
    21     if(b < 0)    b = -b;    //去掉 b 的负号
    22     for(j = 0, y = 0; j < len; )    //循环除法
    23     {
    24         x = y;
    25         while(x <= b && j < len)
    26         {
    27             x = x * 10 + nu[j];
    28             j++;
    29         }
    30         y = x % b;
    31     }
    32     if(y)   return false;
    33     return true;
    34 }
    35 
    36 int main()
    37 {
    38     int t, i = 1;
    39     //freopen("in.txt", "r", stdin);
    40     cin >> t;
    41     while(t--)
    42     {
    43         scanf("%s%lld", ar, &b);
    44         printf("Case %d: ", i++);
    45         puts(option() ? "divisible" : "not divisible" );
    46     }
    47     return 0;
    48 }

     刚才又写了一遍,用的java,刚学java,求不喷:

     1 import java.math.BigInteger;
     2 import java.util.Scanner;
     3 
     4 /**
     5  * @author Administrator
     6  *
     7  */
     8 public class Main {
     9 
    10     /**
    11      * @param args
    12      */
    13     public static void main(String[] args) {
    14         // TODO Auto-generated method stub
    15         BigInteger a, b;
    16         int t;
    17         Scanner cin = new Scanner(System.in);
    18         t = cin.nextInt();
    19         for(int i = 1; i <= t; i++){
    20             a = cin.nextBigInteger();
    21             b = cin.nextBigInteger();
    22             if(a.abs().mod(b.abs()).compareTo(BigInteger.ZERO) == 0){
    23                 System.out.println("Case "+i+": divisible");
    24             }
    25             else {
    26                 System.out.println("Case "+i+": not divisible");
    27             }
    28         }
    29     }
    30 
    31 }
  • 相关阅读:
    模板库
    LCT小结
    BZOJ1502: [NOI2005]月下柠檬树
    技术资料分享
    ORM介紹及ORM優點、缺點
    依賴注入入門——Unity(二)
    面向切面編程入門(一)
    依賴注入入門——Unity(一)
    WCF、.Net Remoting、Web Service概念及区别
    深入设计模式(四)——建造者模式
  • 原文地址:https://www.cnblogs.com/Duahanlang/p/3229401.html
Copyright © 2011-2022 走看看