生活随笔
收集整理的這篇文章主要介紹了
密码生成 算法编程题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
小汪作為一個(gè)有數(shù)學(xué)天分的程序猿,設(shè)計(jì)了一套密碼生成器來(lái)搞定自己的密碼問(wèn)題。
密碼生成器由N個(gè)槽位組成,槽位的下標(biāo)為0~N-1,每個(gè)槽位存儲(chǔ)一個(gè)數(shù)。起初每個(gè)槽位都是0。
密碼生成器會(huì)進(jìn)行M輪計(jì)算,每輪計(jì)算,小汪會(huì)輸入兩個(gè)數(shù)L,R(L<=R),密碼生成器會(huì)將這兩個(gè)數(shù)作為下標(biāo),將兩個(gè)下標(biāo)之間(包含)的所有槽位賦值為i(i為當(dāng)前的輪次,i∈[1,M])。
M輪計(jì)算完成后,密碼生成器會(huì)根據(jù)槽位的最終值生成一條密碼,密碼的生成規(guī)則為: (0a[0] + 1a[1] + 2*a[2] + …
- (N-1)*a[N-1]) mod 100000009 其中a[i]表示第i個(gè)槽位的最終值。 請(qǐng)幫助小汪把他的密碼生成器實(shí)現(xiàn)為代碼。
輸入描述:
第一行為兩個(gè)整數(shù)N,M,表示槽位個(gè)數(shù)和計(jì)算輪數(shù)。
接下來(lái)M行,每行兩個(gè)整數(shù)Li,Ri,表示第i輪計(jì)算的輸入。
輸出描述:
輸出一行,一個(gè)整數(shù)A,表示小汪的開機(jī)密碼。
示例1
輸入
5 3
2 3
1 2
1 1
輸出
10
說(shuō)明
對(duì)于輸入樣例,密碼生成過(guò)程如下:初始: 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相除得到的余數(shù)
對(duì)于前30%的測(cè)試數(shù)據(jù),保證 N,M
<=10000
對(duì)于前50%的測(cè)試數(shù)據(jù),保證 N,M
<=200000
對(duì)于100%的測(cè)試數(shù)據(jù),保證 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.創(chuàng)建密碼數(shù)組,初始值為0,長(zhǎng)度為n* 3.建立循環(huán),循環(huán)次數(shù)為m,進(jìn)行m輪計(jì)算操作* 4.計(jì)算完成后,生成最終密碼** *///讀入n和mScanner sc
= new Scanner
(System.in
);int n
= sc.nextInt
();int m
= sc.nextInt
();//創(chuàng)建密碼數(shù)組,初始值為0,長(zhǎng)度為nint
[] password
= new int
[n
];//建立循環(huán),循環(huán)次數(shù)為m,進(jìn)行m輪計(jì)算操作
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
;//計(jì)算完成后,生成最終密碼System.out.println
(result
);}
}
總結(jié)
以上是生活随笔為你收集整理的密码生成 算法编程题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。