ZOJ 1410 题解
生活随笔
收集整理的這篇文章主要介紹了
ZOJ 1410 题解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 題目鏈接:http://acm.zju.edu.cn/show_problem.php?pid=1410
??? 又是一道簡單題,以前做過一次,結果放棄了,今天看了一下,覺得還是比較簡單于是下手了。
?? 題目的大概意思是給出一個序列(發現ZOJ上面好多序列的題目啊),它的組成是這樣的 11212312341234512345612345671234567812345678912345678910123456789101112345678910 就是先1,然后12,然后123,接著1234。。。。。123456789101112。。。。以此類推,要求給出一個數字i,輸出在這個序列中第i個 數字是多少,注意不是第i個數,而是數字。
??? 我的解法依舊很土,看到子序列的規律,數字的數量分別是1,2,3,4,5,6,7,8,9,11,13。。。。。。后面是因為出現了兩位數,當然,這個 是一個部分等差數列,公差分別是1,2,3,4。。。。。,于是只要步步逼近就可以了。
?? 送上代碼,還是0.01s的。。。下次得做下優化。in C++
代碼?1?#include<iostream>
?2?using?namespace?std;
?3?
?4?int?digit_num(int?n)
?5?{
?6?int?c?=?0?;
?7?while(n?!=?0)
?8?{
?9????c?++?;
10????n?/=?10;
11?}
12?return?c?;
13?}
14?
15?int?nth_digit(int?x?,?int?n)
16?{
17?int?temp?=?x;
18?int?res?;
19?int?num?=?digit_num(x);
20?num?=?num?-?n?+?1;
21?while(num?--)
22?{
23????res?=?temp?%?10;
24????temp?/=?10?;
25?}
26?return?res?;
27?}
28?int?main()
29?{
30?int?cur?;
31?int?cases;
32?int?n?;
33?
34?cin>>cases;
35?while(cases?--)
36?{
37????cin>>n;
38????cur?=?0?;
39????int?sum?=?0;
40????while(n?-?sum?>?0)
41????{
42?????cur?++?;
43?????sum?+=?digit_num(cur);
44?????n?-=?sum?;
45????}
46????if(n?==?0)
47?????n?+=?sum?;
48????cur?=?0?;
49????while(n?>?0)
50????{
51?????cur?++?;
52?????n?-=?digit_num(cur);
53????}
54????n?+=?digit_num(cur);
55????cout<<nth_digit(cur,n)<<endl;
56?}
57?
58?return?0;
59?}
轉載于:https://www.cnblogs.com/vivyli/archive/2010/02/05/1664066.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的ZOJ 1410 题解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wap站点优于传统站点的异同分析
- 下一篇: 打工人午餐吃什么?