实际上我写了一个程序来找到合适的数字..
体面编号具有以下属性:
3,5或两者都是数字。不允许其他数字。 出现3次的次数可被5整除。 出现的次数5可被3整除。
输入格式: 第一行将包含一个整数T,即测试用例的数量。接下来是T行,每行包含整数N,即数字中的位数。
输出格式: 最大的体面数有N位数。如果不存在这样的号码,请告诉Sherlock他错了并打印-1。
约束 1≤T≤20, 1≤N≤100000
public class TrySamp {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
long n = scan.nextInt();
List<Long> list = new ArrayList<Long>();
for (long i = 0; i < n; i++) {
list.add(scan.nextLong());
}
for (int i = 0; i < list.size(); i++) {
long s = list.get(i);
long c = 5 * ((2 * s) % 3);
System.out.println(c);
if (c > s) {
System.out.print(-1);
} else {
int o=1;
System.out.println("=="+ (o <= (s - c)));
for (int j = 1; j <= (s - c); j++) {
System.out.print(5);
}
for (int k = 1; k <= c; k++) {
System.out.print(3);
}
}
System.out.println("lo");
}
}
}
该程序适用于样本输入
示例输入:
4 1 3 5 11
示例输出
-1 555 33333 55555533333
但是当我输入
时程序终止1 100000
或
1 10000
有谁能建议我解决这个问题的方法?? ..
答案 0 :(得分:0)
我遇到了您的问题,Eclipse不允许您在控制台上打印如此大的数字。
如果您尝试在控制台中运行该程序,它将按预期工作。
答案 1 :(得分:-3)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextInt();
List<Long> list = new ArrayList<Long>();
for (long i = 0; i < n; i++) {
list.add(scan.nextLong());
}
for (int i = 0; i < list.size(); i++) {
long s = list.get(i);
long c = 5 * ((2 * s) % 3);
if (c > s) {
System.out.print(-1);
System.out.println();
} else {
int o = 1;
for (int j = 1; j <= (s - c); j++) {
System.out.print(5);
}
for (int k = 1; k <= c; k++) {
System.out.print(3);
}
System.out.println();
}
}
}