-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path548-ordinary-numbers.cpp
More file actions
120 lines (118 loc) · 2.7 KB
/
Copy path548-ordinary-numbers.cpp
File metadata and controls
120 lines (118 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
* Ordinary Numbers [1520B]
* Problem: https://codeforces.com/problemset/problem/1520/B
* Verdict: ACCEPTED Solved: 2021-05-05
* Language: C++17 (GCC 7-32)
* Runtime: 31 ms Memory: 3600 KB
* Tags: brute force, math, number theory
* Author: BidoTeima
* Source: https://codeforces.com/contest/1520/submission/115226821
*/
#include <bits/stdc++.h>
#pragma GCC optimize("-Ofast")
using namespace std;
// Important functions and defines
/// BidoTeima legacy functions
using ll = long long;
ll mod = (ll)1e9+7;
ll MOD = mod;
int64_t POW(int64_t a, int64_t b)
{
if(b==0) return 1;
a%=mod;
int64_t res = POW(a,b/2);
if(b&1)
return (res%mod*res%mod*a%mod)%mod;
return (res%mod*res%mod)%mod;
}
ll sum_range2d(ll i, ll j, ll k, ll l, vector<vector<ll>>& sum)
{
return sum[k][l] - sum[k][j - 1] - sum[i - 1][l] + sum[i - 1][j - 1];
}
ll GCDAC(ll a, ll b)
{
if(b==0)
return a;
return GCDAC(b, a%b);
}
ll gcd(ll a, ll b)
{
if(a<b)swap(a,b);
return GCDAC(a, b);
}
ll lcm(ll a,ll b)
{
return (a/gcd(a,b))*b;
}
ll dist(ll X1, ll Y1, ll X2, ll Y2)
{
return sqrt(POW(X1 - X2, 2) + POW(Y1 - Y2, 2));
}
bool intersect(pair<ll, ll> p1, pair<ll, ll> p2)
{
ll x1 = p1.first, x2 = p1.second, y1 = p2.first, y2 = p2.second;
return (x1 >= y1 && x1 <= y2) ||
(x2 >= y1 && x2 <= y2) ||
(y1 >= x1 && y1 <= x2) ||
(y2 >= x1 && y2 <= x2);
}
bool isPrime(ll n)
{
for (ll i = 2; i * i <= n; i++) if (n % i == 0) return false;
return true;
}
ll inverse(ll n)
{
return POW(n%mod,mod-2);
}
bool mul_overflow(ll x, ll y) {
return (log2(x)+log2(y)) >= 64.0;
}
ll ceili(ll x,ll y){
return (x + y - 1) / y;
}
/*const ll maxn = 30;
ll C[maxn + 1][maxn + 1];
void bin_coeff()
{
C[0][0] = 1;
for (ll n = 1; n <= maxn; ++n) {
C[n][0] = C[n][n] = 1;
for (ll k = 1; k < n; ++k)
C[n][k] = ((C[n - 1][k - 1]) + (C[n - 1][k]));
}
}*/
/*vector<bool> prime(10000005, true);
void sievePrime(ll n)
{
prime[1]=false;
for (int p=2; p*p<=n; p++)
{
if (prime[p] == true)
{
for (int i=p*p; i<=n; i += p)
prime[i] = false;
}
}
}*/
/// End of BidoTeima legacy functions
#define ALL(x) (x).begin(),(x).end()
#define all(cont) (cont).begin(), (cont).end()
#define rall(cont) (cont).rbegin(), (cont).rend()
#define fast ios::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define tc int tt;cin>>tt;while(tt--)
int main() {
fast
tc{
ll n;
cin>>n;
int lg=int(log10(n));
ll ans=9*lg;
for(ll i = 1; i <= 9; i++){
ll icpy=i;
for(int j = 0; j < lg; j++)icpy*=10,icpy+=i;
if(icpy<=n)++ans;
}
cout<<ans<<'\n';
}
}