【問題を作って落ち着いて】練習問題


目次
たこうしきかさん
tic-tac-toeゲーム
最大公約数を求める
f(n)=1-1/1+1/2-1/3+.....+を求めます1/n
f(n)=1+1/1+1/2+1/3+.....+1/n
コインを集める
出力上位50素数
出力100以内の素数
1つの数が素数かどうかを判断する
整数を唱える
素数和
                                                              
単語の長さ
あなたのプログラムは1行のテキストを読み込んで、その中でスペースでいくつかの単語に分けて、'.'終わります.この行のテキストの各単語の長さを出力します.ここでの単語は言語に関係なく、「it's」のような様々な記号を含むことができ、長さは4である.行に連続するスペースが表示される場合があります.入力形式:1行に1行のテキストを入力し、'.'最後に、最後の句点は最後の単語の長さ内に計算できません.≪出力フォーマット|Output Format|emdw≫:行に対応する単語の長さを出力します.各長さはスペースで区切られ、行の最後に最後のスペースはありません.入力サンプル:出力サンプル:4 5 2 3 4
import java.util.Scanner;
public class Main{

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int loc=0;
		String result="";
		String str=in.nextLine().trim();
		if(str.endsWith(".")){
			do{ 
				loc=str.indexOf(' ');  //     
				if(loc!=-1){
					String subString=str.substring(0,loc); //         
					result+=subString.trim().length()+" ";  //  
					str=str.substring(loc).trim();  //           
				}else if(str.endsWith(".")&&!str.startsWith(".")){
					result+=str.length()-1;
				}
				
			}while(loc!=-1);
		}
		 System.out.println(result.trim());

	}

}

 
はいれつ
たこうしきかさん
タイトル内容:
1つの多項式は、xの各べき乗と係数の積の和として表すことができます.例えば、次のようにします.
2x6+3x5+12x3+6x+20
今、あなたのプログラムは2つの多項式を読み込んで、この2つの多項式の和を出力します.つまり、対応するべき乗の係数を加算して出力します.
プログラムが処理するべき乗は最大100です.
入力形式:
合計2つの多項式を入力します.各多項式の入力形式は次のとおりです.
各行に2つの数値を入力します.1番目はべき乗、2番目はそのべき乗を表す係数で、すべての係数は整数です.最初の行は必ず最高べき乗で、最後の行は必ず0次べき乗です.
最初の行と最後の行の間にべき乗の減少順に並ぶとは限らないことに注意してください.べき乗の係数が0の場合、入力データには表示されません.0乗の係数が0の場合も入力データに表示されます.
次のように、最大べき乗から順に0べき乗に下げます.
2x6+3x5+12x3-6x+20
xは小文字xであり、すべての記号の間にスペースがないことに注意してください.べき乗の係数が0の場合、それは必要ありません.
サンプルを入力:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
出力サンプル:
4x6+6x5+12x3+12x2+12x+40
import java.util.Scanner;

/**
         ,      。

 *     :     
          0  ,   0 
               1 
             0 
          1   ,   1   
 * @author kylin
 *
 */
public class Main {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int[] numbers1=new int[101];
		int exponentiation; // 
		int coefficient;  //  
		do{
			exponentiation=in.nextInt();
			coefficient=in.nextInt();
			if(exponentiation=0;i--){
			//   1      0 
			if(i>1&&numbers2[i]!=0){
				if("".equals(result)){
					//   1 
					if(numbers2[i]==1){
						result="x"+i;
					}else if(numbers2[i]==-1){ //   -1 
						result="-x"+i;
					}else{
						result=numbers2[i]+"x"+i;
					}
					
				}else if(numbers2[i]<0){
					if(numbers2[i]==-1){  //    -1
						result+="-x"+i;
					}else{
						result+=numbers2[i]+"x"+i;
					}
					
				}else{
					if(numbers2[i]==1){
						result+="+x"+i;
					}else{
						result+="+"+numbers2[i]+"x"+i;
					}
				}
			}
			//   1      0 
			if(i==1&&numbers2[i]!=0){
				if("".equals(result)){  //     
					if(numbers2[i]==1){   //   1
						 result+="x";
					}else if(numbers2[i]==-1){  //   -1
						 result+="-x";
					}else{
						result+=numbers2[i]+"x";
					}
				}else if(numbers2[i]<0){
					if(numbers2[i]==-1){  //   -1
						result+="x";
					}else{
						result+=numbers2[i]+"x";
					}
				}else{
					if(numbers2[i]==1){   //   1
						result+="+x";
					}else{
						result+="+"+numbers2[i]+"x";
					}
				}
				
			}
			//   0      0 
			if(i==0&&numbers2[i]!=0){
				if(numbers2[i]<0){
					result+=numbers2[i];
				}else if("".equals(result)){
					result+=numbers2[i];
				}else{
					result+="+"+numbers2[i];
				}
			}
			//   0 
			if("".equals(result)&&i==0&&numbers2[i]==0){
				result="0";
			}
		}
		System.out.println(result);
	}

}

 
  • tic-tac-toeゲーム
  • *3 X 3の行列を読み込みます.行列の数字は1で、その位置にXがあり、0でOがあります.
    *プログラムは、この行列に勝者がいるか否かを判断し、勝者を表す文字XまたはOを出力したり、誰も勝利しなかったりする
     
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		final int SIZE=3;
    		int[][]board=new int[SIZE][SIZE];
    		boolean gotResult=false;
    		int numOfX=0;
    		int numOfO=0;
    		//    
    		for(int i=0;i

     
     
    ループ
  • 最大公約数
  • を求めます
    import java.util.Scanner;
    public class Main11 {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int a=in.nextInt();
    		int b=in.nextInt();
              //     :  
    		int gcd=1;
    		for(int i=2;i<=a&&i<=b;i++){
    			if(a%i==0&&b%i==0){
    				gcd=i;
    			}
    		}
    		
    		//     :     
    		int oa=a;
    		int ob=b;
    		while(b!=0){
    		    int r=a%b;
    		    System.out.println(a+","+b+","+r);
    			a=b;
    			b=r;
    		}
    		System.out.println(oa+" "+ob+"       :"+a);
    
    
    	}
    
    }

     
  • f(n)=1-1/1+1/2-1/3+.....+1/n
  • import java.util.Scanner;
    public class Main10 {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt();
    		double sum=0;
    		//   
    //		for(int i=1;i<=n;i++){
    //			if(i%2==1){    //   
    //				sum+=1.0/i;
    //			}else{
    //				sum-=1.0/i;  //   
    //			}
    //			
    //		}
    		
    		//   
    		int sign=1;
    		for(int i=1;i<=n;i++,sign=-sign;){
    			sum+=sign*1.0/i;	
    		}
    		System.out.println("f(n)=1-1/1+1/2-1/3+.....+1/n="+sum);
    		System.out.printf("%.2f",sum);
    
    	}
    
    }

     
  • f(n)=1+1/1+1/2+1/3+.....+1/n
  • import java.util.Scanner;
    public class Main9 {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int n=in.nextInt();
    		double result=0;
    		System.out.println();
    		for(int i=1;i<=n;i++){
    			result+=1.0/i;
    		}
    		System.out.println("f(n)=1+1/1+1/2+1/3+.....+1/n="+result);
    		System.out.printf("%.2f",result);  //           
    
    	}
    
    }

     
  • 湊硬貨
  • 1角、2角、5角のコインでユーザーが入力した10元以下の金額を出し合います
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		System.out.println("         / :");
    		int money=in.nextInt(); //   
    		money*=10; //    
    		for(int one=0;one<=money;one++){
    			for(int two=0;two<=money;two++){
    				for(int five=0;five<=money;five++){
    					if(one+two*2+five*5==money){
    						System.out.println("  "+one+"     ,"+two+"     ,"+five+"     ");
    					}
    				}
    				
    			}
    		}
    	}
    }

     
  • 出力上位50素数
  • public class Main {
    	public static void main(String[] args) {
    		int i=2;
    		int count=0; //     
    		while(count<50){
    			int isPrime=1;
    			for(int j=2;j
    //          
  • 出力100以内の素数
  •  
    public class Main {
    
    	public static void main(String[] args) {
    		for(int i=2;i<100;i++){
    			int isPrime=1;
    			for(int j=2;j
    //     
    	/**
    	 *            
    	 *    n     
    	 * 1. x 2
    	 * 2. 2x/3x/4x  ax
  • は、1つの数が素数
  • であるか否かを判断する.
     
    import java.util.Scanner;
    public class Main {
    
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();
            boolean isPrime=true;
            
            //      n-1      n 
            for(int i=2;i

     
  • 念整数
  • あなたのプログラムは整数を読み込みます.範囲は[-100000100000]です.そして、この整数の一人一人を中国語のピンインで出力します.
    1234を入力すると、出力:
    yi er san si
    各文字のピンインの間にスペースがありますが、最後の文字の後ろにスペースはありません.負の数に遭遇した場合、出力の先頭に「fu」を付け、例えば-2341の出力は次のようにする.
    fu er san si yi
    入力形式:
    [100000100000]の範囲の整数です.
    出力フォーマット:
    この整数を表す各数字の中国語のピンインは、各数字のピンインの間にスペースで区切られ、末尾にスペースがありません.
    サンプルを入力:
    -30
    出力サンプル:
    fu san ling
     
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		int number=in.nextInt();  //       
    		String result=""; //    
    		boolean isMinus=false;  //     
    		if(number<0){
    			isMinus=true;  
    			number=-number;  //     
    		}
    //		if(number==0){  //   while         0 
    //			result="ling";
    //		}
    		do{
    			int units=number%10;
    			switch(units){
    			case 0:
    				result="ling "+result;
    				break;
    			case 1:
    				result="yi "+result;
    				break;
    			case 2:
    				result="er "+result;
    				break;
    			case 3:
    				result="san "+result;
    				break;
    			case 4:
    				result="si "+result;
    				break;
    			case 5:
    				result="wu "+result;
    				break;
    			case 6:
    				result="liu "+result;
    				break;
    			case 7:
    				result="qi "+result;
    				break;
    			case 8:
    				result="ba "+result;
    				break;
    			case 9:
    				result="jiu "+result;
    				break;
    			}
    			number/=10;
    		}while(number>0);
    		if(isMinus){
    			result="fu "+result;
    		}
    		System.out.println(result.trim());
    
    	}
    }

     
  • 素数と
  • 2は1番目の素数,3は2番目の素数,5は3番目の素数と考えられ,順次類推される.
    2つの整数nとm,0が与えられる
    なお、n番目の素数からm番目の素数までのすべての素数であり、nとmの間のすべての素数ではない.
    入力形式:
    2つの整数、1つ目はn、2つ目はmを表す.
    出力フォーマット:
    n番目の素数からm番目の素数までのすべての素数の和を表す整数.n番目の素数とm番目の素数を含む.
    サンプルを入力:
    2 4
    出力サンプル:
    15
    import java.util.Scanner;
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner in=new Scanner(System.in);
    		System.out.println("         [n,m]");
    		int n=in.nextInt();
    		int m=in.nextInt();
    		int count=0;
    		int i=2;
    		int result=0;
    		while(count<=m){
    			boolean isPrime=true;
    			for(int j=2;j=n&&count<=m){
    					result+=i;
    				}
    			}
    			
    			i++;
    		}
    		System.out.println(result);
    	}
    
    }