日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

杭电1597_find the nth digit

發布時間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 杭电1597_find the nth digit 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 Problem Description
假設:
S1 = 1
S2 = 12
S3 = 123
S4 = 1234
.........
S9 = 123456789
S10 = 1234567891
S11 = 12345678912
............
S18 = 123456789123456789
..................
現在我們把所有的串連接起來
S = 1121231234.......123456789123456789112345678912.........
那么你能告訴我在S串中的第N個數字是多少嗎?
?
Input
輸入首先是一個數字K,代表有K次詢問。
接下來的K行每行有一個整數N(1 <= N < 2^31)。
?
Output
對于每個N,輸出S中第N個對應的數字.
?
Sample Input 6 1 2 3 4 5 10 ?
Sample Output 1 1 2 1 2 4 #include <stdio.h>__int64 n,num[70000]; __int32 w;void Bi_serch(int low, int high){int mid;while(low<= high){//mid=(low+high)/2;mid=low+((high-low)>>1);if(num[mid]<n && num[mid+1]>=n){ w=mid; return ;}else if(num[mid+1]<n)low=mid+1;else if(num[mid]>=n)high=mid-1;} }int main(){int t;for(int i=1;i<=65540;++i)num[i]=num[i-1]+i;//printf("%lld\n",num[65540]);scanf("%d",&t);while(t--){w=-1;scanf("%d",&n);Bi_serch(1,65540);int a=n-num[w];a=a%9;if(a==0) a=9;printf("%d\n",a);} return 0; } 這道題由于數據比較大,所以應該是先算出二的31次方是在連接后的第幾個S中出現,然后根據結果定義數組變量大小,由于要查找的數一定存在而且數據有序,可以考慮用二分查找,然后就So easy 了。

總結

以上是生活随笔為你收集整理的杭电1597_find the nth digit的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。