生活随笔
收集整理的這篇文章主要介紹了
密码生成 算法编程题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小汪作為一個有數學天分的程序猿,設計了一套密碼生成器來搞定自己的密碼問題。
密碼生成器由N個槽位組成,槽位的下標為0~N-1,每個槽位存儲一個數。起初每個槽位都是0。
密碼生成器會進行M輪計算,每輪計算,小汪會輸入兩個數L,R(L<=R),密碼生成器會將這兩個數作為下標,將兩個下標之間(包含)的所有槽位賦值為i(i為當前的輪次,i∈[1,M])。
M輪計算完成后,密碼生成器會根據槽位的最終值生成一條密碼,密碼的生成規則為: (0a[0] + 1a[1] + 2*a[2] + …
- (N-1)*a[N-1]) mod 100000009 其中a[i]表示第i個槽位的最終值。 請幫助小汪把他的密碼生成器實現為代碼。
輸入描述:
第一行為兩個整數N,M,表示槽位個數和計算輪數。
接下來M行,每行兩個整數Li,Ri,表示第i輪計算的輸入。
輸出描述:
輸出一行,一個整數A,表示小汪的開機密碼。
示例1
輸入
5 3
2 3
1 2
1 1
輸出
10
說明
對于輸入樣例,密碼生成過程如下:初始: 0 0 0 0 0
第1輪:0 0 1 1 0
第2輪:0 2 2 1 0
第3輪:0 3 2 1 0
密碼生成器最終生成 0 3 2 1 0,則密碼為
(0*0 + 3*1 + 2*2 + 1*3 + 0*4
) mod 100000009
= 10
備注:
mod 表示取余操作,a mod b表示a,b相除得到的余數
對于前30%的測試數據,保證 N,M
<=10000
對于前50%的測試數據,保證 N,M
<=200000
對于100%的測試數據,保證 N
<=1.5*10^7,M
<=200000
import java.util.Scanner
;public class Main
{public static void main
(String
[] args
) {/*** int
[n
] int l int r int m* 1.讀入n和m* 2.創建密碼數組,初始值為0,長度為n* 3.建立循環,循環次數為m,進行m輪計算操作* 4.計算完成后,生成最終密碼** *///讀入n和mScanner sc
= new Scanner
(System.in
);int n
= sc.nextInt
();int m
= sc.nextInt
();//創建密碼數組,初始值為0,長度為nint
[] password
= new int
[n
];//建立循環,循環次數為m,進行m輪計算操作
for (int i
= 1
; i
<= m
; i++
) {int l
= sc.nextInt
();int r
= sc.nextInt
();for
(int j
= l
;j
<= r
;j++
){password
[j
]=i
;}}long result
= 0
;for (int i
= 0
; i
< password.length
; i++
) {result +
= (long
)(i * password
[i
]);}result
= result % 100000009L
;//計算完成后,生成最終密碼System.out.println
(result
);}
}
總結
以上是生活随笔為你收集整理的密码生成 算法编程题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。