牛客竞赛网(数学)

题目描述

某年某月某天的数学课上,Actci正在遨游宇宙呢,对于他的屡教不改,她的数学老师决定难为一下Actci,将他叫醒。
“咳咳,我现在给出一个数a(0≤a≤10100000\le a\le10^{10000}0≤a≤1010000),判断a是否是3,5,8,11中某些数的的倍数,你只有一秒钟的时间,答不上来的话,呵,%#W%@#@...”。

作为他后桌的你怎么能看着Actci“受害”呢,于是你决定帮帮他。
 

输入描述:

一行,一个数 a。

输出描述:

两行。
第一行输出 Yes 或 No,表示这个数是否是这四个数中一个或几个数的倍数。
第二行,a是哪些数的倍数,每个数用空格隔开(顺序从小到大),若第一行为 No 则不用输出。

示例1

输入
123456789
输出
Yes
3

示例2

输入
2341232402462055420
输出
Yes
3 5

示例3

输入
9741427
输出
No

题号:NC19841
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String args[]){
        Scanner scan=new Scanner(System.in);
        String str=scan.next();
        String str1="";
        BigInteger n=new BigInteger(str);
        BigInteger zero=new BigInteger("0");
        BigInteger san=new BigInteger("3");
        BigInteger wu=new BigInteger("5");
        BigInteger ba=new BigInteger("8");
        BigInteger shiyi=new BigInteger("11");
        if(n.mod(san).equals(zero)){
            str1+=" 3";
        }
        if(n.mod(wu).equals(zero)){
            str1+=" 5";
        }
        if(n.mod(ba).equals(zero)){
            str1+=" 8";
        }
        if(n.mod(shiyi).equals(zero)){
            str1+=" 11";
        }
        if(str1==""){
            System.out.println("No");
        }
        else{
            System.out.printf("Yes\n"+str1.trim());
        }
    }
}

你可能感兴趣的:(算法,蓝桥杯,java,开发语言,职场和发展)