
做不出來
#include <iostream>
using namespace std;
int n, x, ansal;
int pd(int x) {
int k = x;
while (k > 0) {
if (k % 10 == 7) {
return false;
}
k = k / 10;
}
return x;
}
int main() {
ios::sync_with_stdio(false);//關閉同步不解釋
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
ansal = x;
for (int j = 1; j <= x; j++)
if (!pd(j))
ansal--;
cout << ansal << '\n';
}
return 0;
}
做不出來
#include <bits/stdc++.h>
using namespace std;
int sum, x, ans;
int pd(int x) {
int k = x;
while (k > 0) {
if (k % 10 == 7) {
return false;
}
k = k / 10;
}
return x;
}
int main () {
cin >> sum;
for (int i = 0; i < sum; i++) {
cin >> x;
int t = x;
for (int j = 0; j <= t; j++) {
if (pd(j) == j) {
ans++;
}
}
cout << ans << endl;
ans = 0;
}
return 0;
}
所以沒辦法了,只能用規律了,
#include <iostream>
#include <cstring>
using namespace std;
long long k, s = 1, sum = 0, ans = 0;
int t, i, j;
char a[1001];
int main() {
cin >> t;
while (t--) {
ans = sum = 0;
s = 1;
cin >> a;
k = strlen(a);
//以下若干行是特判QWQ
for (i = 0; i < k; ++i)
/*
如果有數位是7
such as 700
其運行結果和699 完全一致
5789898984 和 5699999999 運行結果完全一致
(因為如果一個數字中有一個數位為7,它就不是Pascal數了啊)
把這個數掃一遍,所以如果發現7,就把以后的全部內容替換為6999...
*/
if (a[i] == '7') {
a[i] = '6';
for (j = i + 1; j < k; ++j)
a[j] = '9';
break;
}
for (i = k - 1; i >= 0; --i)
/*
如果一個數的個位是8或9,就少減了2^0個7
如果一個數的十位是8或9,就少減了2^1個7
如果一個數的百位是8或9,就少減了2^2個7
...以此類推
是個找規律,不想寫證明QWQ
*/
{
if (a[i] > '7')
sum += s;
s *= 9;
}
for (i = 0; i < k; ++i) {
ans = ans * 9 + a[i] - '0';
}
cout << ans - sum << endl;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/278111.html
標籤:其他
上一篇:Android Handler的postDelayed()關閉的方法
下一篇:06-appium-元素定位
