codeforces 1216E1(數學+暴力)
題意描述
思路
觀察發現,每次到 9 , 99 , 999 , 9999... 9,99,999,9999... 9,99,999,9999...以後,等差 d d d就會多加1。例如, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 1,2,3,4,5,6,7,8,9 1,2,3,4,5,6,7,8,9這段數字的位數等差為1, 10 , 11...99 10,11...99 10,11...99,這段數字的位數等差為就變成2了。我們可以根據這個性質,求出來k對應的數是屬於哪一段,然後暴力的構造出字串即可。
AC程式碼
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<long,long> PLL;
typedef pair<char,char> PCC;
typedef long long ll;
const int N=2*1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
ll f[10];
void solve(){
ll n;cin>>n;
ll cnt=0,k=1,idx=0,t=1,cpy=n;
while(1){
cnt++;
n-=k;
//求出如果最後n小於等於0,則加上k,獲得該k屬於cnt段的第幾個數字
if(n<=0){
n+=k;
break;
}
//滿足的話公差d加一
if(cnt==f[idx]){
idx++;
t++;
}
k+=t;
}
string s;
//暴力構造字串
rep(i,1,cnt+1) s+=to_string(i);
cout<<s[n-1]<<endl;
}
int main(){
IOS;
f[0]=9;
rep(i,1,10) f[i]=f[i-1]*10+9;
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}
相關文章
- Codeforces 114A-Cifera(暴力)
- 【暴力】codeforces 838A Binary BlocksBloC
- Codeforces Round #336 (Div. 2) B 暴力
- Tricky Sum【數學】CodeForces 598A
- Divisibility 【數學計數】Codeforces 597A
- CodeForces703B Mishka and trip 數學
- Codeforces 626D Jerry's Protest(暴力列舉+概率)
- Codeforces Round #360 (Div. 2) D 數學題
- Codeforces Round #224 (Div. 2)(數學、dfs)
- Codeforces 715A. Plus and Square Root[數學構造]
- codeforces 340CTourist Problem(找規律數學題)
- Codeforces 872C Maximum splitting:數學【分解成合數之和】
- CodeForces571A. Lengthening Sticks(組合數學-容斥)
- codeforces#253 D - Andrey and Problem裡的數學知識
- Codeforces Round #537 (Div. 2)B. Average Superhero Gang Power (貪心+暴力)
- 『暴力學習 docker ,後附影片版』Docker
- Codeforces 876B Divisiblity of Differences:數學【任意兩數之差為k的倍數】
- Codeforces 577B Modulo Sum:數學 結論【選數之和為m的倍數】
- Codeforces 402D Upgrading Array:貪心 + 數學
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B 暴力
- Codeforces Round #688 (Div. 2) C. Triangles(思維,數學)
- 容斥 + 組合數學 ---Codeforces Round #317 A. Lengthening Sticks
- 分塊=-=優雅的暴力=-=中位數模版
- 暴力破解-基於Pikachu的學習
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C 數學
- CodeForces - 628D (數位dp)
- 如何提升自己的Codeforces分數
- UVA 10892 LCM Cardinality (分解因數+暴力)
- POJ1142 Smith Numbers(數論,分治+暴力,質因數分解)MIT
- Codeforces 617E XOR and Favorite Number (區間異或和 莫隊演算法 分塊暴力)演算法
- CodeForces 401D 數位DP
- 暴力破解
- 簡單暴力!21 分鐘學會 apollo-client + reduxclientRedux
- 【數位dp】Beautiful numbers CodeForces - 55D
- 【Codeforces Round 362 (Div 2)B】【模擬】Barnicle 科學計數法轉普通表示法
- Codeforces 1070H - BerOS File Suggestion 暴力 (2018-2019 ICPC, NEERC)ROS
- api暴力獲取API
- C++暴力指南C++