0
点赞
收藏
分享

微信扫一扫

【2022刷题】整除光棍

史值拥 2022-03-18 阅读 63

引言

输入格式:

输入在一行中给出一个不以5结尾的正奇数x(<1000)。

输出格式:

在一行中输出相应的最小的s和n,其间以1个空格分隔。

输入样例:

31

输出样例:

3584229390681 15

解题思路

由于数目过大,考虑使用java里的BigInteger类进行操作,定义一个变量字符串s,每次循环都加“1”,即“1”,“11”,“111”…
每次循环将s变成BigInteger的类型与x进行取余操作,若为0,答案就出来了。

代码部分

import java.util.*;
import java.beans.beancontext.BeanContext;
import java.io.*;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	BigInteger x = new BigInteger(br.readLine());
    	BigInteger ans;
    	String t = "1";
    	while(true) {
    		BigInteger i  = new BigInteger(t);
    		if(i.mod(x).toString().equals("0")) {
    			ans = i.divide(x);
    			break;
    		}
    		t+="1";
    	}
    	System.out.println(ans.toString()+" "+t.length());
    	br.close();
    }
}		

过程记录

我最初是用x与一个不断自增1的变量进行乘法然后看结果是否符合要求,若符合就为正确答案,结果都超时,但是我还是记录下我用来判断一个字符串是否都为1的函数,这里利用了正则表达式。

   	if(isGg(ans)) {
   		System.out.println("Yes");
   	}else {
   		System.out.println("No");
   	}
   	//判断是否都为1
    static boolean isGg(BigInteger ans) {
    	String str = "^1*";
    	return ans.toString().matches(str);
    }
举报

相关推荐

L1-046 整除光棍

L1-046 整除光棍 (20 分)

L1-046 整除光棍 (20分)

ACwing 刷题 2022/3/18

0 条评论