2016年6月28日 星期二

各位數和排序


http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=30785


import java.util.*;     
public class Main {     
 public static void main(String[] args) {     
       Scanner scn=new Scanner (System.in);     
       while(scn.hasNext()){     
          int n=scn.nextInt(),i=0,sort[][]=new int [n][2],temp=0;     
            for(;i<n;i++){     
          int tot=0,num=scn.nextInt();     
           sort[i][0]=num;     
            while(num!=0){     
             tot+=num%10;     
               num/=10;     
           }     
          sort[i][1]=tot;     
            }     
          for(i=0;i<n-1;i++){     
             for(int j=0;j<n-i-1;j++){     
                   if(sort[j][1]==sort[j+1][1]){     
                      if(sort[j][0]>sort[j+1][0]){     
                            temp=sort[j+1][0];     
                         sort[j+1][0]=sort[j][0];     
                           sort[j][0]=temp;     
                           temp=sort[j+1][1];     
                         sort[j+1][1]=sort[j][1];     
                           sort[j][1]=temp;     
                       }     
                  }     
                  if(sort[j][1]>sort[j+1][1]){     
                        temp=sort[j+1][0];     
                     sort[j+1][0]=sort[j][0];     
                       sort[j][0]=temp;     
                       temp=sort[j+1][1];     
                     sort[j+1][1]=sort[j][1];     
                       sort[j][1]=temp;     
                   }     
              }     
          }     
          for(i=0;i<n;i++){     
               System.out.print(sort[i][0]);     
              if(i<n-1)System.out.print(" ");     
         }     
          System.out.printf("\n");     
       }     
 } 
/* 
    題目:各位數和排序
    作者:1010
    時間:西元 2016 年 6 月 */       
}  

2016年6月27日 星期一

Q488: Triangle Wave


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=429&mosmsg=Submission+received+with+ID+17585649

#include<stdio.h> 
int main(){     
  int n,i,j,a,f,k,l;
  scanf("%d",&n);
  for(i=0;i<n;i++){
   scanf("%d%d",&a,&f);
   if(i)printf("\n");
   for(j=1;j&lt=f;j++){
    int c=0,count;
    for(k=1;k&lt=a*2-1;k++){
     count=k;
     if(k&gta){
       count-=c;
      }
     for(l=0;l<count;l++){

       printf("%d",k-c);
     } 
     printf("\n");
     if(k&gt=a)c+=2;
    }
    if(j!=f)printf("\n");
   }
  }
  return 0;
 /* 
    題目:Q488: Triangle Wave
    作者:1010
    時間:西元 2016 年 6 月 */
} 

困難度 
*這題要注意兩個換行 1.從第二個測資輸入完 a f 後要換行 2.每次輸入結果的最後不換行

Q913: Joana and the Odd Numbers


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=11&problem=854&mosmsg=Submission+received+with+ID+17585410

import java.util.*; 
public class Main { 
 
 public static void main(String[] args) { 
       Scanner scn=new Scanner (System.in); 
       while(scn.hasNext()){
        long tot=0,n=scn.nextLong();
        tot=(n+1)/2;
        tot=tot*tot*2-1;
           System.out.println(tot*3-6);
       }
 } 
 /* 
    題目:Q913: Joana and the Odd Numbers
    作者:1010
    時間:西元 2016 年 6 月 */
}  

困難度 
首先先找到行數跟那行有幾個值的關係求得行數再來透過行數找出最後一個值

Q458: The Decoder

http://luckycat.kshs.kh.edu.tw/homework/q458.htm

#include<stdio.h>
#include<string.h>
int main(){     
  char str[10000];
  int i;
  while(scanf("%s",str)!=EOF){
   for(i=0;i<tstrlen(str);i++)
    printf("%c",str[i]-7);
   printf("\n");
  }
  return 0;
 /* 
    題目:Q458: The Decoder
    作者:1010
    時間:西元 2016 年 6 月 */
}

困難度 
這題很簡單只要把題目輸出的k算出來就知道了

Q483: Word Scramble


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=6&problem=424&mosmsg=Submission+received+with+ID+17582033

 
import java.util.*; 
public class Main { 
 
 public static void main(String[] args) { 
       Scanner scn=new Scanner (System.in); 
       while(scn.hasNext()){
        String str=scn.nextLine();
        String arr[]=str.split(" ");
        for(int i=0;i&ltarr.length;i++){
          StringBuffer sb = new StringBuffer();
             sb.append(arr[i]);
             sb.reverse();
             System.out.print(sb);
             if(i!=arr.length-1)System.out.print(" ");
        }
        System.out.println("");
       }
 
 } 
 /* 
    題目:Q483: Word Scramble
    作者:1010
    時間:西元 2016 年 6 月 */
}  

*補充(字串反轉)請將輸入的每一行字串,顛倒印出來。

import java.util.Scanner;
 
public class Reverse{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s;
        s = sc.nextLine();
        StringBuffer sb = new StringBuffer();
        sb.append(s);
        sb.reverse();
        System.out.println(sb);
    }
/* 
    題目:利用StringBuffer()呈現字串反轉
    作者:1010
    時間:西元 2016 年 6 月 */
}
Input:
Java
Output:
avaJ
困難度 
*這題要注意字串最尾巴不能也有空白必須用判斷式否則會Presentation error

2016年6月26日 星期日

Q11192 - Group Reverse


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=23&problem=2133&mosmsg=Submission+received+with+ID+17580598


import java.util.Scanner;

public class test {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner scn=new Scanner(System.in);
  while(scn.hasNext()){
   int n=scn.nextInt();
   if(n==0)break;
   String str=scn.next();
   char arr[]=str.toCharArray();
   if(n==1){
    for(int i=arr.length-1;i&gt=0;i--){
     System.out.print(arr[i]);
    }
    System.out.println();
   }
   else{
    n=arr.length/n;
   for(int i =n-1;i&ltarr.length;i+=n){
    for(int j=0;j<n;j++)
     System.out.print(arr[i-j]);
   }
   System.out.println();
  }
  }

 }

}

/* 
    題目:Q10055: Hashmat the brave warrior
    作者:1010
    時間:西元 2016 年 6 月 */


困難度 ★

Q10924: Prime Words


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=21&problem=1865&mosmsg=Submission+received+with+ID+17580387



困難度 

Q10107:What is the Median?

Q10107:What is the Median?




#include<stdio.h>
int main(){     
  long long arr[10000],n=0,num,i=0;
  while(scanf("%d",&num)!=EOF){
   if(n==0)arr[n]=num;
   else{
    arr[n]=num;
    for(i=n;i>0;i--){
     if(arr[i-1]&ltarr[i]){
      arr[i]=arr[i-1];arr[i-1]=num;
     }
    }
   }
   if(n%2==0)printf("%lli\n",arr[n/2]);
   else printf("%lli\n",(arr[n/2]+arr[(n/2)+1])/2);
 n++;
  }
  return 0;
 /* 
    題目:Q10107:What is the Median?
    作者:1010
    時間:西元 2016 年 5 月 */
}



困難度 ★
*注意資料型態可能有溢位的問題,本題做法是插入排序,泡沫排序

Q10055: Hashmat the brave warrior

Q10055: Hashmat the brave warrior







import java.util.*;
public class Main{
 public static void main(String[] args) {
  Scanner scn =new Scanner (System.in);
  
  while(scn.hasNext()){
   long  a=scn.nextLong(),b=scn.nextLong();
   System.out.printf("%d\n",a&gtb?a-b:b-a);
  }
  
 }

}
/* 
    題目:Q10055: Hashmat the brave warrior
    作者:1010
    時間:西元 2016 年 6 月 */


困難度 ★
*注意題目有說這些數不會超過232所以要注意資料型態
Java使用long 輸入記得使用nextLong()以免測試結果Runtime error
C使用long long 輸出搭配%lli
提醒 使用內建函示庫
Math.abs(a-b)取絕對值會
Runtime error

Q591:Box of Bricks

Q591:Box of Bricks

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=7&problem=532&mosmsg=Submission+received+with+ID+17576677


import java.util.*;
public class test {
 public static void main(String[] args) {
  Scanner scn =new Scanner (System.in);
  int n,count=0;
  while((n=scn.nextInt())!=0){
   int arr[]=new int [50],tot=0,max=0;
   for(int i=0;i<n;i++){
    arr[i]=scn.nextInt();
    tot+=arr[i];
   }
   tot/=n;
   for(int i=0;i<n;i++){
    if(tot<arr[i])max+=arr[i]-tot;
   }
   System.out.printf("Set #%d\n",++count);
   System.out.printf("The minimum number of moves is %d.\n",max);
  }
 }

}
/* 
    題目:Q591:Box of Bricks
    作者:1010
    時間:西元 2016 年 6 月 */

Sample Iutput
6
5 2 4 1 7 5
3
1 1 1
0
Sample Output
Set #1
The minimum number of moves is 5.

Set #2
The minimum number of moves is 0.


困難度 ★
*注意每筆後面要多加一行換行以免測資過不了
計算平均大於的相減