请填写该数字(一个整数),不要填写任何多余的内容或说明文字。
public class Main {
public static void main(String[] args){
int n=1543;
int count=0;
while(n>0){
if(n%2==1){
count++;
n=n-1;
n=n/2;
}
else{
n=n/2;
}
}
System.out.println(count);
}
}
答案:5
2.
星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。
public class Main1 {
public static void main(String[] args){
int year=2014;
int month=11;
int day=9;
int count=1000;
count=count+day;
boolean flag=false;
int a[][]= {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
};
while(count>31){
// month++;
if(month>12){
month=1;
year++;
}
flag= (year%4 == 0 && year%100 != 0) || year%400 == 0;
if(flag){
count=count-a[1][month];
month++;
}
else {
count=count-a[0][month];
month++;
}
// 避免出现2月30号的情况
if(flag==true&&month==2&&count==30){
month++;
count-=29;
}
if(flag==false&&month==2&&(count==29||count==30)){
month++;
count-=28;
}
}
day=count;
// year=String.format("%02d",year);
System.out.println(year+"-"+String.format("%02d",month)+"-"+String.format("%02d",day));
}
}
答案:2017-08-05
3.
九数分三组
1~9的数字可以组成3个3位数,设为:A,B,C, 现在要求满足如下关系:
B = 2 * A
C = 3 * A
请你写出A的所有可能答案,数字间用空格分开,数字按升序排列。
注意:只提交A的值,严格按照格式要求输出。
public class Main3 {
public static void main(String[] args){
int a[]={0,0,0,0,0,0,0,0,0};
int temp;
int count=0;
int A,B,C;
boolean b[]={true,true,true,true,true,true,true,true,true,true};
for(int a1=1;a1<=3;a1++){
b[a1]=false;
for(int a2=1;a2<=9;a2++){
if(b[a2]!=false){
b[a2]=false;
for(int a3=1;a3<=9;a3++){
if(b[a3]!=false){
A=a1*100+a2*10+a3;
if(A<=333){
B=2*A;
C=3*A;
a[0]=A/100;
temp=A-a[0]*100;
a[1]=temp/10;
a[2]=A%10;
a[3]=B/100;
temp=B-a[3]*100;
a[4]=temp/10;
a[5]=B%10;
a[6]=C/100;
temp=C-a[6]*100;
a[7]=temp/10;
a[8]=C%10;
for(int i=0;i<=7;i++){
for(int j=i+1;j<=8;j++){
if(a[i]==a[j]||a[i]==0||a[j]==0){
i=8;
}
if(i==7&&j==8&&a[7]!=a[8]&&a[7]!=0&&a[8]!=0){
System.out.print(A);
System.out.print(' ');
}
}
}
count++;
}
}
}
b[a2]=true;
}
}
b[a1]=true;
}
//System.out.println(count);
}
}
答案: 192 219 273 327
4.
循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m)
{
n = n % m;
Vector v = new Vector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。
//循环节长度
import java.util.Vector;
public class Main4{
public static void main(String[] args) {
System.out.println(f(11, 13));
}
public static int f(int n, int m) {
n = n % m;
Vector v = new Vector();
for (;;) {
//把每次的余数添加进Vector
v.add(n);
// System.out.println(n);
//余数乘10,想想自己做除法时的步骤
n *= 10;
n = n % m;
if (n == 0)
return 0;
//当余数n和队列里的某个余数一样说明开始循环了
if (v.indexOf(n) >= 0)
return v.size() - v.indexOf(n);
}
}
}
答案: return v.size() - v.indexOf(n);
5.
打印菱形
给出菱形的边长,在控制台上打印出一个菱形来。
为了便于比对空格,我们把空格用句点代替。
当边长为8时,菱形为:
.......*
......*.*
.....*...*
....*.....*
...*.......*
..*.........*
.*...........*
*.............*
.*...........*
..*.........*
...*.......*
....*.....*
.....*...*
......*.*
.......*
下面的程序实现了这个功能,但想法有点奇怪。
请仔细分析代码,并填写划线部分缺失的代码。
public class A
{
public static void f(int n)
{
String s = "*";
for(int i=0; i<2*n-3; i++) s += ".";
s += "*";
String s1 = s + "\n";
String s2 = "";
for(int i=0; i
s = "." + _____________________________________ + "*"; //填空
s1 = s + "\n" + s1;
s2 += s + "\n";
}
System.out.println(s1+s2);
}
public static void main(String[] args)
{
f(8);
}
}
注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。
public class Main5 {
public static void f(int n)
{
String s = "*";
for(int i=0; i<2*n-3; i++) s += ".";
s += "*";
String s1 = s + "\n";
String s2 = "";
for(int i=0; i"+s);
s = "." +s1.substring(0, 2*n - 4 - i)+ "*";
s1 = s + "\n" + s1;
s2 += s + "\n";
}
System.out.println(s1+s2);
}
public static void main(String[] args)
{
f(8);
}
}
6.
加法变乘法
我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
public class Main6 {
public static void main(String[] args){
for(int a=1;a<=48;a++){
for(int b=1;b<=48;b++){
// if(Math.abs(b-a)<=1);
if(Math.abs(b-a)>1){
int sum=0;
for(int i=1;i<=49;i++){
if(i==a||i==b){
}
if(i==a+1||i==b+1){
sum=sum+i*(i-1);
}
if(i!=a&&i!=b&&i!=b+1&&i!=a+1) sum=sum+i;
}
if(sum==2015){
System.out.println(a);
}
}
}
}
}
}
答案:10
(靠前的那个数可取值有10,16,24,27)
7.
牌型种数
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
public class Main7 {
public static void main(String[] args){
int count=0;
for(int a1=0;a1<=4;a1++){
for(int a2=0;a2<=4;a2++){
for(int a3=0;a3<=4;a3++){
for(int a4=0;a4<=4;a4++){
for(int a5=0;a5<=4;a5++){
for(int a6=0;a6<=4;a6++){
for(int a7=0;a7<=4;a7++){
for(int a8=0;a8<=4;a8++){
for(int a9=0;a9<=4;a9++){
for(int a10=0;a10<=4;a10++){
for(int a11=0;a11<=4;a11++){
for(int a12=0;a12<=4;a12++){
for(int a13=0;a13<=4;a13++){
int sum=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13;
if(sum==13) count++;
}
}
}
}
}
}
}
}
}
}
}
}
}
System.out.println(count);
}
}
import java.util.Scanner;
public class Main8 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int w=in.nextInt();
int m=in.nextInt();
int n=in.nextInt();
int m1=(m-1)/w+1;//行号
int m2=0;//列号
if(m1%2==1) m2=m%w;
if(m1%2==0) m2=w-m%w+1;
int n1=(n-1)/w+1;
int n2=0;
if(n1%2==1) n2=n%w;
if(n1%2==0) n2=w-n%w+1;
System.out.println(Math.abs(m1-n1)+Math.abs(m2-n2));
}
}