ブルーブリッジカップ基礎練習02 Java実現
65379 ワード
ブルーブリッジカップの入門練習では、他の答えが冗長に書かれているものもあり、Javaの簡潔な方法を十分に利用していないものもあります.ここには私自身が書いたコードを統合し、javaの実現だけを提供しています.問題があれば、検討を歓迎します.
まず、この部分のテーマはvipです.自分で検査環境を構築したいのは私の博文を参考にすることができます:簡単に青い橋の検査システムの本節のコードを実現するのはすべて私が書いたシステム類の基礎の上で実現しました.コピーfunメソッド内部のコードを自分で実行したい場合は、Scannerのオブジェクトを使用する場合は、コードの最初にScannerオブジェクトを作成するコードを1行書けばいいです.時間変換 文字列比較 分解素因数 行列乗算bug点:行列のゼロ乗は単位行列なのか、それともしっかりした数学の基礎が必要なのか.2 D配列レプリケーションについては、配列レプリケーションの方法 について参照してください.矩形面積交 完璧な代価注:本題はあまりにも頭を焼いて、私が探している対応するC言語の解決策、すり終わった後にコードの中で注釈を書いて、問題があったら私に 数の読み方私のアルゴリズムは長いですが、分かりやすいです.考えを言えば、数字を億級、万級、個級に分けて、4つの数字ごとに1級に分けて、この4つの数字の読み方は同じであることがわかります.(printメソッド)しかし、タイトルの要求に応じて、最初に読んだのは10億に出会ったら、10億ではなく10億に読むが、後のレベルは、現れたら1を増やさなければならない.そこで、最初の読み方を解決するための関数(oneメソッド)を書きました.特に、
上記の方法は、タイトルの要件を満たしていない「例えば「10010」を「yi wan ling yi shi」と読み、この方法で読むと1万10、1がありません.Sineの舞 FJの文字列という問題は本当に再帰的な魅力を感じさせ、同じくPrintStreamのprinfメソッドを使用しました. チップテストは不良品よりも正品が多いため、検出データの1つ以上がこの製品が正品であることを示しています.列ごとに1の個数を見ればいいです. 亀兎競走予測 回形取数 時報アシスタント 2 n皇后问题白黒皇后は2つの皇后问题とすることができて、先方白皇后は更に黒皇后を放します. Huffumanツリー 高精度加算私は最高位が10より大きくなることを恐れてわざわざn配列に空を残したが、実は余計だった. 階乗計算2600個の長さが満たされています.そうしないと、 が足りません.
まず、この部分のテーマはvipです.自分で検査環境を構築したいのは私の博文を参考にすることができます:簡単に青い橋の検査システムの本節のコードを実現するのはすべて私が書いたシステム類の基礎の上で実現しました.コピーfunメソッド内部のコードを自分で実行したい場合は、Scannerのオブジェクトを使用する場合は、コードの最初にScannerオブジェクトを作成するコードを1行書けばいいです.
/*
t, “::” 。 , , , “0”。 , t=0, “0:0:0”; t=3661, “1:1:1”。
, t(0<=t<=86399)。
, “::” , 。
0
0:0:0
5436
1:30:36
*/
public class Main10 {
public static void main(String[] args) {
LT lt=new LT(" ") {
@Override
public void fun() {
int num=sc.nextInt();
int h=0;
int m=0;
int s=0;
h=num/3600;
num=num%3600;
m=num/60;
s=num%60;
System.out.println(h+":"+m+":"+s);
}
};
lt.run();
}
}
/*
( 1 10 ),
4 :
1: 。 Beijing Hebei
2: , ( ),
Beijing Beijing
3: ,
( , 2)。 beijing BEIjing
4: , 。
Beijing Nanjing
,
。
,
,
BEIjing
beiJing
3
*/
public class Main11 {
public static void main(String[] args) {
LT lt=new LT(" ") {
@Override
public void fun() {
String s1=sc.nextLine();
String s2=sc.nextLine();
if(s1.length()!=s2.length()){
System.out.println(1);
}else{
if(s1.equals(s2)){
System.out.println(2);
}else if(s1.equalsIgnoreCase(s2)){
System.out.println(3);
}else{
System.out.println(4);
}
}
}
};
lt.run();
}
}
/*
[a,b] 。
a,b。
, k=a1*a2*a3...(a1<=a2<=a3...,k )( )
3 10
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
, 。
2<=a<=b<=10000
*/
public class Main12 {
public static void main(String[] args) {
LT lt=new LT(" ") {
@Override
public void fun() {
int a=sc.nextInt();
int b=sc.nextInt();
for(int i=a;i<=b;i++){
System.out.print(i+"=");
int temp=i;
while(temp!=1){
for(int j=2;j<=temp;j++){
if(temp%j==0){
temp=temp/j;
if(temp!=1){
System.out.print(j+"*");
}else{
System.out.print(j);
}
break;
}
}
}
System.out.println();
}
}
};
lt.run();
}
}
/*
N A, A M (M )
:
A =
1 2
3 4
A 2
7 10
15 22
N、M(1<=N<=30, 0<=M<=5), A
N , N 10 , A
N , N , A M 。
2 2
1 2
3 4
7 10
15 22
*/
public class Main14 {
public static void main(String[] args) {
LT lt = new LT(" ") {
@Override
public void fun() {
int n = sc.nextInt();
int m = sc.nextInt();
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = sc.nextInt();
}
}
int[][] t = new int[n][n];
int[][] b = new int[n][n];
for (int i = 0; i < a.length; i++) {
b[i] = a[i].clone();
}
if (m == 0) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
System.out.println(1 + " ");
} else {
System.out.println(0 + " ");
}
}
System.out.println();
}
} else {
for (int k = 1; k < m; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int sum = 0;
for (int l = 0; l < n; l++) {
sum += b[i][l] * a[l][j];
}
t[i][j] = sum;
}
}
for (int i = 0; i < a.length; i++) {
b[i] = t[i].clone();
}
}
for (int[] c : b) {
for (int d : c) {
System.out.print(d + " ");
}
System.out.println();
}
}
}
};
lt.run();
}
}
/*
, X Y 。 ,
, 。
, 。
, ,
10^7 。
, , 。
1 1 3 3
2 2 4 4
1.00
*/
import java.util.Arrays;
public class Main13 {
public static void main(String[] args) {
LT lt=new LT(" ") {
@Override
public void fun() {
double ax=sc.nextDouble();
double ay=sc.nextDouble();
double bx=sc.nextDouble();
double by=sc.nextDouble();
double cx=sc.nextDouble();
double cy=sc.nextDouble();
double dx=sc.nextDouble();
double dy=sc.nextDouble();
if(max(ax,bx)out.println("0.00");
}else{
double []a={ax,bx,cx,dx};
double []b={ay,by,cy,dy};
Arrays.sort(a);
Arrays.sort(b);
double sum=(a[2]-a[1])*(b[2]-b[1]);
System.out.printf("%.2f",sum);
}
}
public double max(double a,double b){
return a>b?a:b;
}
public double min(double a,double b){
return a
/*
, , 。
。 , ,
。
:
mamad
ad : mamda
md : madma
ma : madam ( ! !)
N, (N <= 8000)
, N.
, 。
Impossible
5
mamad
3
*/
public class Main15 {
public static void main(String[] args) {
LT lt = new LT(" ") {
@Override
public void fun() {
int[] b = new int[26];//
int n = sc.nextInt();
char x = '0';//
sc.nextLine();// ,
String str = sc.nextLine();
char[] s = str.toCharArray();
/*
* , 26 , ,
*/
for (int i = 0; i < n; i++) {
int j = s[i] - 'a';
b[j]++;
}
int k = 0;//
for (int j = 0; j < 26; j++) {
if (b[j] % 2 != 0) {
k++;
x = (char) (j + 'a');// C
}
}
if (k >= 2)
System.out.println("Impossible");
else
System.out.println(changes(s, x, n));
}
int changes(char s[], char x, int n) {
int i, change = 0, j, k;
// for
for (i = 0; i < n / 2; i++) {
//
if (s[i] == x) {
/* for ,
* ,
* ,
* i
* i
*/
for (j = i; j < n - i - 1; j++)
if (s[n - i - 1] == s[j])
break;
change += j - i;
for (k = j; k > i; k--)
s[k] = s[k - 1];
s[i] = s[n - i - 1];
}
//
else {
/*
*
*
* i
*/
for (j = n - i - 1; j >= i; j--)
if (s[i] == s[j])
break;
change += n - i - 1 - j;
for (k = j; k < n - i - 1; k++)
s[k] = s[k + 1];
s[n - i - 1] = s[i];
}
}
return change;
}
};
lt.run();
}
}
//C
#include
#include
int main()
{
char a[100];int i,j,k,l;
char b[20][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char c[20][10]={"","","shi","bai","qian","wan","shi","bai","qian","yi","shi"};
gets(a);
l=strlen(a);
for(i=0;i48;
if(j==0){if(i1)if(a[i+1]!=48)printf("%s ",b[j]);}
else
if((l-i==2||l-i==6||l-i==10)&&j==1)printf("%s ",c[l-i]);
else if(a[i-1]==48&&j==1)printf("%s ",c[l-i]);
else printf("%s %s ",b[j],c[l-i]);
}
printf("
");
return 0;
}
上記の方法は、タイトルの要件を満たしていない「例えば「10010」を「yi wan ling yi shi」と読み、この方法で読むと1万10、1がありません.
/*
Tom , :
, 0 , , , 。
, 1234567009 ,
。
, , 12 3456 7009 , :
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
。
: ,
, 。
, “10010” “yi wan ling yi shi” “yi wan
ling shi”,“100000” “shi wan” “yi shi wan”,“2000” “er qian”
“liang qian”。
, 2,000,000,000。
, , 。
1234567009
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
*/
public class Main17 {
public static void main(String[] args) {
LT lt = new LT(" ") {
String[] b = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi" };
@Override
public void fun() {
int num = sc.nextInt();
if (num >= 100000000) {
one(num / 100000000, "yi");
print(num % 100000000 / 10000, "wan");
print(num % 10000, "");
} else if (num >= 10000) {
one(num % 100000000 / 10000, "wan");
print(num % 10000, "");
} else {
one(num % 10000, "");
}
}
public void one(int n, String str) {
String c[] = { "", "shi ", "bai ", "qian " };
int t[] = new int[4];
t[0] = n / 1000;
t[1] = n % 1000 / 100;
t[2] = n % 100 / 10;
t[3] = n % 10;
int i = 0;
while (t[i++] == 0)
;
i--;
for (; i < 4; i++) {
if (t[i] == 0) {
if (i != 3 && t[i + 1] != 0) {
System.out.print(b[t[i]] + " ");
}
} else if (t[i] == 1 && i == 2) {
System.out.print(c[4 - i - 1]);
} else {
System.out.print(b[t[i]] + " ");
System.out.print(c[4 - i - 1]);
}
}
System.out.print(str + " ");
}
public void print(int n, String str) {
if (n == 0) {
return;
}
String c[] = { "", "shi ", "bai ", "qian " };
int t[] = new int[4];
t[0] = n / 1000;
t[1] = n % 1000 / 100;
t[2] = n % 100 / 10;
t[3] = n % 10;
int i = 0;
for (; i < 4; i++) {
if (t[i] == 0) {
if (i != 3 && t[i + 1] != 0) {
System.out.print(b[t[i]] + " ");
}
} else {
System.out.print(b[t[i]] + " ");
System.out.print(c[4 - i - 1]);
}
}
System.out.print(str + " ");
}
};
lt.run();
}
}
/*
Sine
FJ ,FJ ,
。 “Sine ” , ,
。
An=sin(1–sin(2+sin(3–sin(4+...sin(n))...)
Sn=(...(A1+n)A2+n-1)A3+...+2)An+1
FJ Sn , FJ Sn , 。
:N<201。
Sn, 。 、
。
3
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
*/
public class Main18 {
public static void main(String[] args) {
LT lt = new LT("Sine ") {
@Override
public void fun() {
printS(sc.nextInt());
}
public void printA(int n) {
for (int i = 1; i <= n; i++) {
System.out.print("sin(" + i);
if (i == n) {
break;
}
if (i % 2 != 0) {
System.out.print("-");
} else {
System.out.print("+");
}
}
for (int i = 0; i < n; i++) {
System.out.print(")");
}
}
public void printS(int n) {
for (int i = 1; i < n; i++) {
System.out.print("(");
}
for (int i = 1; i <= n; i++) {
printA(i);
System.out.print("+" + (n - i + 1));
if (i != n) {
System.out.print(")");
}
}
}
};
lt.run();
}
}
/*
FJ
FJ :
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
AN ?
:N ≤ 26。
AN, 。 、
。
3
ABACABA
*/
public class Main19 {
public static void main(String[] args) {
LT lt = new LT("FJ ") {
@Override
public void fun() {
f(sc.nextInt());
}
public void f(int a)
{
if(a==1)
System.out.printf("%c",'A');
else
{
f(a-1);
System.out.printf("%c",a-1+'A');
f(a-1);
}
}
};
lt.run();
}
}
/*
n(2≤n≤20) , , 。
。 ,
。 , (
)。
, 。
n, 。
n+1 n*n , n 。 0 1, n
i j (1≤i, j≤n) i j ,1
,0 ,i=j 1( 。
)。
3
1 0 1
0 1 0
1 0 1
1 3
*/
public class Main20 {
public static void main(String[] args) {
LT lt = new LT(" ") {
@Override
public void fun() {
int n=sc.nextInt();
int [][]a=new int[n][n];
for(int i=0;ifor(int j=0;jfor(int i=0;iint sum=0;
for(int j=0;jif(2*sum>n){
System.out.print(i+1+" ");
}
}
}
};
lt.run();
}
}
/*
, , —— 。
, , 。 , , —— ,
, t , s 。 ,t,s , —— 。
, , —— v1( v1 ), v2, t,s , l—— 。 , , —— —— , , v1,v2,t,s,l, 。
, v1,v2,t,s,l, (v1,v2<=100;t<=300;s<=10;l<=10000 v1,v2 )
, —— “T” “R” “D”, , , 。
, ( ) ( )。
10 5 5 2 20
D
4
10 5 5 1 20
R
3
10 5 5 3 20
T
4
*/
public class Main21 {
public static void main(String[] args) {
LT lt = new LT(" ") {
@Override
public void fun() {
int v1=sc.nextInt();
int v2=sc.nextInt();
int t=sc.nextInt();
int s=sc.nextInt();
int l=sc.nextInt();
int l1=0,l2=0;
int i=0;
while(true){
i++;
l1+=v1;
l2+=v2;
if(l1==l||l2==l){
break;
}
if(l1-l2>=t){
l1-=s*v1;
}
}
System.out.println((l1==l?l2==l?"D":"R":"T")+"
"+i);
}
};
lt.run();
}
}
/*
, , 90 。 , 。
200 m, n, 。 m n , 。
, mn , 。 , 。
3 3
1 2 3
4 5 6
7 8 9
1 4 7 8 9 6 3 2 5
3 2
1 2
3 4
5 6
1 3 5 6 4 2
*/
public class Main22 {
public static void main(String[] args) {
LT lt = new LT(" ") {
@Override
public void fun() {
int m=sc.nextInt();
int n=sc.nextInt();
int [][]a=new int [m][n];
for(int i=0;ifor(int j=0;jint times=0;
int x=0,y=0;
while(times!=n*m){
for(;x1;x++){
System.out.print(a[x][y]+" ");
a[x][y]=-1;
times++;
}
x--;
y++;
for(;y1;y++){
System.out.print(a[x][y]+" ");
a[x][y]=-1;
times++;
}
y--;
x--;
for(;x>=0&&a[x][y]!=-1;x--){
System.out.print(a[x][y]+" ");
a[x][y]=-1;
times++;
}
x++;
y--;
for(;y>=0&&a[x][y]!=-1;y--){
System.out.print(a[x][y]+" ");
a[x][y]=-1;
times++;
}
y++;
x++;
}
}
};
lt.run();
}
}
/*
, 。
h m , , :
m 0, , “o'clock”, 3:00 “three o'clock”。
m 0, , , 5:30 “five thirty”。
, 0~20 :
0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
30 thirty,40 forty,50 fifty。
20 60 , , 。 31 30 1 , “thirty one”。
21:54 “twenty one fifty four”,9:07 “nine seven”,0:15 “zero fifteen”。
h m, 。 0。h 24,m 60。
。
0 15
zero fifteen
*/
public class Main23 {
public static void main(String[] args) {
LT lt = new LT(" ") {
String [] a={"zero" ,"one" ,"two" ,"three" ,"four" ,"five" ,"six" ,"seven" ,"eight" ,"nine" ,"ten" ,
"eleven" ,"twelve" ,"thirteen" ,"fourteen" ,"fifteen" ,"sixteen" ,"seventeen" ,"eighteen" ,"nineteen" ,"twenty"};
String [] b={"twenty","thirty","forty","fifty"};
@Override
public void fun() {
int h=sc.nextInt();
int m=sc.nextInt();
change(h);
if(m==0){
System.out.println(" o'clock");
}else{
change(m);
}
}
public void change(int s){
if(s<=20){
System.out.print(a[s]);
}else if(s%10==0){
System.out.print(b[s/10-2]);
}else{
System.out.print(b[s/10-2]+" "+a[s%10]);
}
}
};
lt.run();
}
}
/*
2n
n*n , 。 n
n , 、 ,
、 。 ?n 8。
n, 。
n , n 0 1 , 1, ,
0, 。
, 。
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
2
4
1 0 1 1
1 1 1 1
1 1 1 1
1 1 1 1
0
*/
public class Main24 {
public static void main(String[] args) {
LT lt = new LT("2n ") {
int bqueen[];//
int wqueen[];//
int chessboard[][];// 1: 0:
int count;
int n;
public void BlackQueen(int k){
int i;
int j;
for (i = 0; i < k - 1; i++) {
int judge = bqueen[i] - bqueen[k - 1];
if (judge == 0 || Math.abs(k - 1 - i) == Math.abs(judge))
return;
}
if (k == n) {
count++;
return;
}
for (j = 0; j < n; j++) {
if (j != wqueen[k] && chessboard[k][j] == 1) {
bqueen[k] = j;
BlackQueen(k + 1);
}
}
}
void WhiteQueen(int k) {
int i;
int j;
for (i = 0; i < k - 1; i++) {
int judge = wqueen[i] - wqueen[k - 1];
if (judge == 0 || Math.abs(k - 1 - i) == Math.abs(judge))
return;
}
if (k == n) {
BlackQueen(0);
return;
}
for (j = 0; j < n; j++) {
if (chessboard[k][j] == 1) {
wqueen[k] = j;
WhiteQueen(k + 1);
}
}
}
public void fun() {
int i;
int j;
count=0;
n = sc.nextInt();
chessboard = new int[n][n];
bqueen =new int[n];
wqueen=new int[n];
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
chessboard[i][j] = sc.nextInt();
WhiteQueen(0);
System.out.print(count);
}
};
lt.run();
}
}
/*
Huffuman
Huffman 。 , Huffman 。
{pi}={p0, p1, …, pn-1}, Huffman :
1. {pi} , pa pb, pa pb {pi} ,
{pi} 。 pa + pb。
2. 1, {pi} 。
, , Huffman 。
: , Huffman 。
, {pi}={5, 3, 8, 2, 9},Huffman :
1. {5, 3, 8, 2, 9} , 2 3, {pi} 5 ,
{5, 8, 9, 5}, 5。
2. {5, 8, 9, 5} , 5 5, {pi} 10 ,
{8, 9, 10}, 10。
3. {8, 9, 10} , 8 9, {pi} 17 ,
{10, 17}, 17。
4. {10, 17} , 10 17, {pi} 27 ,
{27}, 27。
5. , 27, , 5+10+17+27=59。
n(n<=100)。
n , p0, p1, …, pn-1, 1000。
Huffman 。
5 3 8 2 9
*/
public class Main25 {
public static void main(String[] args) {
LT lt = new LT("Huffuman ") {
int a[] = new int[100];
public void fun() {
int n = sc.nextInt();
for(int i=0;iint sum = 0;
for (int i = 0; i < n - 1; i++) {
sort(i, n);
a[i+1]+=a[i];
sum+=a[i+1];
// System.out.println(sum);
}
System.out.println(sum);
}
public void sort(int start, int n) {
for (int i = start; i < n; i++) {
for (int j = i+1; j < n ; j++) {
if (a[j] < a[i]) {
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
}
};
lt.run();
}
}
/*
a b, 。a b 100 。
a b , 。
, 。
A,A[0] a ,A[1] a , 。
B b。
c = a + b , A[0] B[0] , , (
) r, C[0], C[0] (A[0]+B[0])%10。 A[1] B[1]
, r , C[1] A[1]、B[1] r .
, r , C[1] 。 ,
C 。
C 。
, a, b。
100 , 0。
, a + b 。
20100122201001221234567890
2010012220100122
20100122203011233454668012
*/
public class Main26 {
public static void main(String[] args) {
LT lt = new LT(" ") {
public void fun() {
String src=sc.nextLine();
char[]a=src.toCharArray();
src=sc.nextLine();
char[]b=src.toCharArray();
if(a.length>b.length){
caculate(a,b);
}else{
caculate(b,a);
}
}
public void caculate(char [] l,char []s){
int ll=l.length;
int sl=s.length;
int n[]=new int [ll+1];
int i;
for(i = 0;i1]=(l[ll-i-1]+s[sl-i-1]-48-48+n[ll-i])/10;
n[ll-i]=(l[ll-i-1]+s[sl-i-1]-48-48+n[ll-i])%10;
}
for(;i1]=(l[ll-i-1]-48+n[ll-i])/10;
n[ll-i]=(l[ll-i-1]-48+n[ll-i])%10;
}
i=0;
while(n[i++]==0);
for(i=i-1;i1;i++){
System.out.print(n[i]);
}
}
};
lt.run();
}
}
/*
n, n! 。
n!=1*2*3*…*n。
n! , , 。 A a,A[0] a ,A[1] a , 。
a k A k, 。
a 1, 2, 3, n , n! 。
n,n<=1000。
n! 。
10
3628800
*/
public class Main27 {
public static void main(String[] args) {
LT lt = new LT(" ") {
public void fun() {
int a[]=new int[2600];
int n=sc.nextInt();
a[0] = 1;
for(int i=2;i<=n;i++){
int extra=0;
for(int j=0;jint temp=a[j]*i+extra;
extra=temp/10;
a[j]=temp%10;
}
}
int i=a.length;
while(a[--i]==0);
for(;i>=0;i--){
System.out.print(a[i]);
}
}
};
lt.run();
}
}