算法代碼

有人說(手動@老組長)我上篇簡書是混次數(shù)的,

我的回答是:“不”

因為——這篇才是。

其實前幾天就在準備決賽了!

自信嗎?還是自負?

emmm。哲學問題!

當然了,

就做了幾道往年的決賽真(水)題,

跟真正的大佬差的很遠!

這幾天做的代碼粘一下吧!

混篇簡書。

//標題:方格填數(shù)

//在2行5列的格子中填入1到10的數(shù)字。

//要求:

//相鄰的格子中的數(shù),右邊的大于左邊的,下邊的大于上邊的。

//如【圖1.png】所示的2種,就是合格的填法。

//請你計算一共有多少種可能的方案。

//請?zhí)峤辉撜麛?shù),不要填寫任何多余的內(nèi)容(例如:說明性文字)。

public class 第六屆C++A組第一題方格填數(shù) {

public static int a[]= {1,2,3,4,5,6,7,8,9,10};

public static void f(int a[],int k)

{

if(k==10)

{

check(a);

return;

}

for(int i=k;i<10;i++)

{

int t=a[k];a[k]=a[i];a[i]=t;

f(a,k+1);

t=a[k];a[k]=a[i];a[i]=t;

}

}

public static void check(int a[])

{

if(a[0]<a[1]&&a[1]<a[2]&&a[2]<a[3]&&a[3]<a[4]&&

a[5]<a[6]&&a[6]<a[7]&&a[7]<a[8]&&a[8]<a[9]&&

a[0]<a[5]&&a[1]<a[6]&&a[2]<a[7]&&a[3]<a[8]&&a[4]<a[9])

{

ans++;

}

}

static int ans=0;

public static void main(String[] args) {

f(a,0);

System.out.println(ans);

}

}

//標題:積分之迷

//小明開了個網(wǎng)上商店,賣風鈴。共有3個品牌:A,B,C。

//為了促銷,每件商品都會返固定的積分。

//小明開業(yè)第一天收到了三筆訂單:

//第一筆:3個A + 7個B + 1個C,共返積分:315

//第二筆:4個A + 10個B + 1個C,共返積分:420

//第三筆:A + B + C,共返積分....

//你能算出第三筆訂單需要返積分多少嗎?

//請?zhí)峤辉撜麛?shù),不要填寫任何多余的內(nèi)容。

public class 第六屆C++B組積分之謎 {

public static void main(String[] args) {

for(int a=0;a<100;a++)

{

for(int b=0;b<100;b++)

{

for(int c=0;c<100;c++)

{

if(3*a+7*b+c==315&&4*a+10*b+c==420)

{

System.out.println(a+b+c);

}

}

}

}

}

}

//標題:胡同門牌號

//小明家住在一條胡同里。胡同里的門牌號都是連續(xù)的正整數(shù),由于歷史原因,最小的號碼并不是從1開始排的。

//有一天小明突然發(fā)現(xiàn)了有趣的事情:

//如果除去小明家不算,胡同里的其它門牌號加起來,剛好是100!

//并且,小明家的門牌號剛好等于胡同里其它住戶的個數(shù)!

//請你根據(jù)這些信息,推算小明家的門牌號是多少?

//請?zhí)峤辉撜麛?shù),不要填寫任何多余的內(nèi)容或說明性文字。

public class 第六屆javaA組胡同門牌號 {

static void f(int x)

{

for(int i=1;i<x+1;i++)

{

int count=0;

for(int j=i;j<i+x+1;j++)

{

count+=j;

}

if(count==100+x)

{

System.out.println(x);

}

}

}

public static void main(String[] args) {

for(int x=1;x<50;x++)

{

f(x);

//8 or 10

}

}

}

//標題:分機號

//X老板脾氣古怪,他們公司的電話分機號都是3位數(shù),老板規(guī)定,所有號碼必須是降序排列,且不能有重復(fù)的數(shù)位。比如:

//751,520,321 都滿足要求,而,

//766,918,201 就不符合要求。

//現(xiàn)在請你計算一下,按照這樣的規(guī)定,一共有多少個可用的3位分機號碼?

//請直接提交該數(shù)字,不要填寫任何多余的內(nèi)容。

public class 六JavaB分機號 {

static int ans=0;

public static void main(String[] args) {

for(int i=2;i<10;i++)

{

for(int j=i-1;j>=1;j--)

{

for(int k=j-1;k>=0;k--)

{

System.out.println(i*100+j*10+k);

ans++;

}

}

}

System.out.println(ans);

}

}

//標題:機器人數(shù)目

//少年宮新近郵購了小機器人配件,共有3類,其中,

//A類含有:8個輪子,1個傳感器

//B類含有: 6個輪子,3個傳感器

//C類含有:4個輪子,4個傳感器

//他們一共訂購了100套機器人,收到了輪子600個,傳感器280個。

//根據(jù)這些信息請你計算:B類型機器人訂購了多少個?

//請直接提交該整數(shù),不要填寫任何多余內(nèi)容。

public class 六JavaC機器人數(shù)目 {

public static void main(String[] args) {

for(int i=0;i<101;i++)

{

for(int j=0;j<101;j++)

{

for(int k=0;k<101;k++)

{

if((i*8+j*6+k*4)==600&&(i*1+j*3+k*4)==280&&i+j+k==100)

{

System.out.println(j);

}

}

}

}

}

}

//隨意組合

//小明被綁架到X星球的巫師W那里。

//其時,W正在玩弄兩組數(shù)據(jù) (2 3 5 8) 和 (1 4 6 7)

//他命令小明從一組數(shù)據(jù)中分別取數(shù)與另一組中的數(shù)配對,共配成4對(組中的每個數(shù)必被用到)。

//小明的配法是:{(8,7),(5,6),(3,4),(2,1)}

//巫師凝視片刻,突然說這個配法太棒了!

//因為:

//每個配對中的數(shù)字組成兩位數(shù),求平方和,無論正倒,居然相等:

//87^2 + 56^2 + 34^2 + 21^2? =? 12302

//78^2 + 65^2 + 43^2 + 12^2? =? 12302

//小明想了想說:“這有什么奇怪呢,我們地球人都知道,隨便配配也可以啊!”

//{(8,6),(5,4),(3,1),(2,7)}

//86^2 + 54^2 + 31^2 + 27^2 = 12002

//68^2 + 45^2 + 13^2 + 72^2 = 12002

//巫師頓時凌亂了。。。。。

//請你計算一下,包括上邊給出的兩種配法,巫師的兩組數(shù)據(jù)一共有多少種配對方案具有該特征。

//配對方案計數(shù)時,不考慮配對的出現(xiàn)次序。

//就是說:

//{(8,7),(5,6),(3,4),(2,1)}

//與

//{(5,6),(8,7),(3,4),(2,1)}

//是同一種方案。

//注意:需要提交的是一個整數(shù),不要填寫任何多余內(nèi)容(比如,解釋說明文字等)

public class 七C語言A隨意組合 {

public static int a[]= {2,3,5,8};

public static int b[]= {1,4,6,7};

public static int count=0;

public static void f(int b[],int k){

if(k==4){

check(b);

return;

}

for(int i=k;i<b.length;i++){

int t=b[k];b[k]=b[i];b[i]=t;

f(b,k+1);

t=b[k];b[k]=b[i];b[i]=t;

}

}

public static void check(int b[]){

int m=(a[0]*10+b[0])*(a[0]*10+b[0])+(a[1]*10+b[1])*(a[1]*10+b[1])+(a[2]*10+b[2])*(a[2]*10+b[2])+(a[3]*10+b[3])*(a[3]*10+b[3]);

int n=(b[0]*10+a[0])*(b[0]*10+a[0])+(b[1]*10+a[1])*(b[1]*10+a[1])+(b[2]*10+a[2])*(b[2]*10+a[2])+(b[3]*10+a[3])*(b[3]*10+a[3]);

if(m==n)

count++;

}

public static void main(String[] args) {

f(b,0);

System.out.println(count);

}

}

//一步之遙

//從昏迷中醒來,小明發(fā)現(xiàn)自己被關(guān)在X星球的廢礦車里。

//礦車停在平直的廢棄的軌道上。

//他的面前是兩個按鈕,分別寫著“F”和“B”。

//小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和后退。

//按F,會前進97米。按B會后退127米。

//透過昏暗的燈光,小明看到自己前方1米遠正好有個監(jiān)控探頭。

//他必須設(shè)法使得礦車正好停在攝像頭的下方,才有機會爭取同伴的援助。

//或許,通過多次操作F和B可以辦到。

//礦車上的動力已經(jīng)不太足,黃色的警示燈在默默閃爍...

//每次進行 F 或 B 操作都會消耗一定的能量。

//小明飛快地計算,至少要多少次操作,才能把礦車準確地停在前方1米遠的地方。

//請?zhí)顚憺榱诉_成目標,最少需要操作的次數(shù)。

//注意,需要提交的是一個整數(shù),不要填寫任何無關(guān)內(nèi)容(比如:解釋說明等)

public class 七C語言B一步之遙 {

public static boolean check(int i,int j){

if((i*97-j*127)==1)

return true;

return false;

}

public static void main(String[] args) {

for(int i=0;i<100;i++){

for(int j=0;j<100;j++){

if(check(i,j)){

System.out.println(i+j);

}

}

}

}

}

import java.math.BigInteger;

//階乘位數(shù)

//9的階乘等于:362880

//它的二進制表示為:1011000100110000000

//這個數(shù)字共有19位。

//請你計算,9999 的階乘的二進制表示一共有多少位?

//注意:需要提交的是一個整數(shù),不要填寫任何無關(guān)內(nèi)容(比如說明解釋等)

public class 七JavaA階乘位數(shù) {

public static void main(String[] args) {

BigInteger a=f(9999);

String n=Integer.toBinaryString(a.intValue());

System.out.println(a.bitLength());

}

public static BigInteger f(int n){

if(n>1){

return BigInteger.valueOf(n).multiply(f(n-1));

}else{

return BigInteger.ONE;

}

}

}

//憤怒小鳥

//

//X星球憤怒的小鳥喜歡撞火車!

//

//一根平直的鐵軌上兩火車間相距 1000 米

//兩火車 (不妨稱A和B) 以時速 10米/秒 相對行駛。

//

//憤怒的小鳥從A車出發(fā),時速50米/秒,撞向B車,

//然后返回去撞A車,再返回去撞B車,如此往復(fù)....

//兩火車在相距1米處停車。

//

//問:這期間憤怒的小鳥撞 B 車多少次?

//

//注意:需要提交的是一個整數(shù)(表示撞B車的次數(shù)),不要填寫任何其它內(nèi)容。

public class 七JavaB憤怒小鳥 {

public static void main(String[] args) {

double s=1000;

int count=0;

while(s>=1)

{

s=(s-(s/60)*20);

count++;

}

System.out.println(s+","+count);

//count表示撞擊的次數(shù),如果是奇數(shù)則答案為(count+1)/2,如果是偶數(shù)則是count/2;

}

}

//平方末尾

//能夠表示為某個整數(shù)的平方的數(shù)字稱為“平方數(shù)”

//比如,25,64

//雖然無法立即說出某個數(shù)是平方數(shù),但經(jīng)??梢詳喽硞€數(shù)不是平方數(shù)。

//因為平方數(shù)的末位只可能是:[0, 1, 4, 5, 6, 9] 這6個數(shù)字中的某個。

//所以,4325435332必然不是平方數(shù)。

//如果給你一個2位或2位以上的數(shù)字,你能根據(jù)末位的兩位來斷定它不是平方數(shù)嗎?

//請計算一下,一個2位以上的平方數(shù)的最后兩位有多少種可能性?

//注意:需要提交的是一個整數(shù),表示2位以上的平方數(shù)最后兩位的不同情況數(shù)。

//不要填寫任何多余內(nèi)容(比如,說明解釋文字等)

import java.util.Arrays;

public class 七JavaC平方末尾 {

static int a[]=new int [100];

static int count=1;

public static void main(String[] args) {

for(int i=10;i<100;i++)

{

a[i]=(i*i)%100;

}

Arrays.sort(a);

for(int i=0;i<99;i++)

{

if(a[i]==a[i+1])a[i]=0;

}

Arrays.sort(a);

for(int i=0;i<100;i++)

{

if(a[i]>0)//System.out.println(a[i]);

count++;

}

System.out.println(count);

}

}

import java.util.Scanner;

//標題:36進制

//對于16進制,我們使用字母A-F來表示10及以上的數(shù)字。

//如法炮制,一直用到字母Z,就可以表示36進制。

//36進制中,A表示10,Z表示35,AA表示370

//你能算出 MANY 表示的數(shù)字用10進制表示是多少嗎?

//請?zhí)峤灰粋€整數(shù),不要填寫任何多余的內(nèi)容(比如,說明文字)

public class 八C語言B36進制 {

public static void main(String[] args) {

int sum=22*36*36*36+10*36*36+23*36+34;

System.out.println(sum);

}

}

//標題:哥德巴赫分解

//

//哥德巴赫猜想認為:不小于4的偶數(shù)都可以表示為兩個素數(shù)的和。

//

//你不需要去證明這個定理,但可以通過計算機對有限數(shù)量的偶數(shù)進行分解,驗證是否可行。

//

//實際上,一般一個偶數(shù)會有多種不同的分解方案,我們關(guān)心包含較小素數(shù)的那個方案。

//對于給定數(shù)值范圍,我們想知道這些包含較小素數(shù)方案中最大的素數(shù)是多少。

//

//比如,100以內(nèi),這個數(shù)是19,它由98的分解貢獻。

//

//你需要求的是10000以內(nèi),這個數(shù)是多少?

//

//注意,需要提交的是一個整數(shù),不要填寫任何多余的內(nèi)容(比如,說明性的文字)

import java.util.Arrays;

public class 八C語言C哥德巴赫猜想 {

public static boolean zhishu(int n){

for(int i=2;i<=n/2;i++)

if(n%i==0)

return false;

return true;

}

static int z[]=new int [10001];

public static void main(String[] args) {

for(int i=4;i<=10000;i+=2){

for(int a=2;a<=(i-2);a++){

if(zhishu(a)&&zhishu(i-a)){

z[i]=a;

break;

}

}

}

Arrays.sort(z);

System.out.println(z[10000]);

}

}

//標題:圖書排列

//將編號為1~10的10本書排放在書架上,要求編號相鄰的書不能放在相鄰的位置。

//請計算一共有多少種不同的排列方案。

//注意,需要提交的是一個整數(shù),不要填寫任何多余的內(nèi)容。

public class 八JavaA圖書排列 {

static int a[]= {1,2,3,4,5,6,7,8,9,10};

static int ans=0;

static void f(int a[],int k)

{

if(k==10)

{

check(a);

}

for(int i=k;i<10;i++)

{

int t=a[k];a[k]=a[i];a[i]=t;

f(a,k+1);

t=a[k];a[k]=a[i];a[i]=t;

}

}

static void check(int a[])

{

for(int i=0;i<9;i++)

{

if(Math.abs(a[i]-a[i+1])==1)

{

return ;

}

}

ans++;

}

public static void main(String[] args) {

f(a,0);

System.out.println(ans);

}

}

//標題:平方十位數(shù)

//

//由0~9這10個數(shù)字不重復(fù)、不遺漏,可以組成很多10位數(shù)字。

//這其中也有很多恰好是平方數(shù)(是某個數(shù)的平方)。

//

//比如:1026753849,就是其中最小的一個平方數(shù)。

//

//請你找出其中最大的一個平方數(shù)是多少?

//

//注意:你需要提交的是一個10位數(shù)字,不要填寫任何多余內(nèi)容。

public class 八JavaB平方十位數(shù)

{

public static void check(long a[])

{

if(a[0]==0)return;

long x=a[0]*1000000000+a[1]*100000000+a[2]*10000000+a[3]*1000000+a[4]*100000+a[5]*10000+a[6]*1000+a[7]*100+a[8]*10+a[9];

long y=(int)(Math.sqrt(x));

if(y*y==x)

System.out.println(y+","+x);

}

public static void f(long sz[],int k)

{

if(k>=10)

{

check(sz);

return;

}

for(int j=k;j<10;j++)

{

long t;

t=sz[k];sz[k]=sz[j];sz[j]=t;

f(sz,k+1);

t=sz[k];sz[k]=sz[j];sz[j]=t;

}

}

static long sz[]= {0,1,2,3,4,5,6,7,8,9};

public static void main(String[] args) {

f(sz,0);

}

}

//標題:數(shù)位和

//數(shù)學家高斯很小的時候就天分過人。一次老師指定的算數(shù)題目是:1+2+...+100。

//高斯立即做出答案:5050!

//這次你的任務(wù)是類似的。但并非是把一個個的數(shù)字加起來,而是對該數(shù)字的每一個數(shù)位作累加。

//這樣從1加到100的“和”是:901

//從10加到15是:21,也就是:1+0+1+1+1+2+1+3+1+4+1+5,這個口算都可以出結(jié)果的。

//按這樣的“加法”,從1加到1000是多少呢? 請通過瀏覽器提交該結(jié)果。

//當然,我們并不期望你能像高斯一樣,發(fā)現(xiàn)數(shù)字背后深奧的秘密,只要請計算機幫忙,一切都easy!

//注意:你需要提交的是一個整數(shù),不要填寫任何多余的內(nèi)容(比如:說明性文字)

public class 八JavaC數(shù)位和 {

static int ans=0;

static void f(int n)

{

do{

ans+=(n%10);

n=n/10;

}while(n>0);

}

public static void main(String[] args) {

for(int i=1;i<101;i++)

f(i);

System.out.println(ans);

}

}

emmm。。估計沒人能認真看完。。

哈哈哈,完成目的了,本周簡書+1


水題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容