考慮如下的序列生成演算法:從整數 n 開始,如果 n 是偶數,把它除以 2;如果 n 是奇數,把它乘 3 加1。用新得到的值重複上述步驟,直到 n = 1 時停止。例如,n = 22 時該演算法生成的序列是:22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1。人們猜想(沒有得到證明)對於任意整數 n,該演算法總能終止於 n = 1。這個猜想對於至少 1 000 000內的整數都是正確的。對於給定的 n,該序列的元素(包括 1)個數被稱為 n 的迴圈節長度。在上述例子中,22 的迴圈節長度為 16。輸入兩個數 i 和 j,你的任務是計算 i 到 j(包含 i 和 j)之間的整數中,迴圈節長度的最大值。
【輸入】輸入每行包含兩個整數 i 和 j。所有整數大於 0,小於 1000000。
【輸出】對於每對整數 i 和 j,按原來的順序輸出 i 和 j,然後輸出二者之間的整數中的最大迴圈節長度。這三個整數應該用單個空格隔開,且在同一行輸出。對於讀入的每一組資料,在輸出中應位於單獨的一行。
【輸入範例】
1 10
100 200
201 210
900 1000
【輸出範例】
1 10 20
100 200 125
201 210 89
900 1000 174
#include "stdio.h"
long int m = 0, c, a[4], b[4], l[4] = ;
void main()
void p()
void c()
for (; o <= b[m] - a[m]; o++)
else
}if (n > max)
n = 1;
} m++;
}
有n個瓶子,編號 1 ~ n,放在架子上。比如有5個編號瓶子:2 1 3 5 4。要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為:1 2 3 4 5。對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。
【輸入】 輸入格式為兩行:第一行: 乙個正整數n(n<10000), 表示瓶子的數目。第二行:n個正整數,用空格分開,表示瓶子目前的排列情況。
【輸出】輸出資料為一行乙個正整數,表示至少交換多少次,才能完成排序。
【輸入輸出範例】
例如,輸入:
53 1 2 5 4
程式應該輸出:
3再例如,輸入:
55 4 3 2 1
程式應該輸出:
2
#include "stdio.h"
void main()
/*else
}if(min<0)
min=min+a[k];
/*printf("%d ",min);bug*/
for(c=0;cif(min%a[c]!=0)
if(n==(n+1)*(n+1))
l++;
min=v;
} /*printf("%d ",n);bug*/
n=0;
} if(l!=0)
printf("%d",l);
}
程式練習題2 5
要求 疊加等邊三角形的繪製。使用turtle庫中的turtle.fd 函式和 turtle.seth 函式繪製乙個疊加等邊三角形。先看下我的 import turtle turtle.fd 250 turtle.seth 120 turtle.fd 250 turtle.seth 120 turtl...
練習題目2
1 將陣列a中的內容和陣列b中的內容進行交換 陣列一樣大 思路 新建乙個陣列作為中間陣列進行交換.如下 2 計算1 1 1 2 1 3 1 4 1 5 1 99 1 100的值.思路 通過每一輪迴圈給分子乘以 1來控制加數的正負號,計算出和.如下 3 編寫程式數一下1到199的所有整數 現過多少次數...
命令練習題2
1 為主機新增兩塊30gb的scsi硬碟 2 劃分3個主分割槽,各5gb,剩餘空間作為擴充套件分割槽 root localhost fdisk dev sdb 3 在擴充套件分割槽中建立2個邏輯分割槽,容量分別為2gb 10gb 4 將第乙個邏輯分割槽的型別改為swap 5 將第乙個主分割槽格式化為...