給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。
例如:n = 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。
input
輸入n(1 <= n <= 10^9)
output
輸出包含1的個數
input示例
12
output示例
5
#include #include #include #include using namespace std;
int dp[10][10];
int a[10];
int sum(int pos)
int result = 0;
for (int i = pos; i >= 0; i--)
result++;
return result;
}int dfs(int pos, int state, bool limit)
return 0;
} if (!limit && dp[pos][state] != -1)
int up = limit? a[pos] : 9;
int result = 0;
if (state == 1)
else
}for (int i = 0; i <= up; i++)
if (!limit)
return result;
}int solve(int n)
return dfs(pos - 1, 0, true);
}int main()
方法2:
#include#include#includeusing namespace std;
typedef long long ll;
ll dp[10][10], a[10];
ll dfs(int pos, int num, int limit)
if (!limit && dp[pos][num] != -1)
int up = limit ? a[pos] : 9;
ll result = 0;
for (int i = 0; i <= up; i++)
if (!limit)
return result;
}ll solve(ll x)
return dfs(pos - 1, 0, 1);
}int main(void)
51nod 1009 數字1的數量
1009 數字1的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏 關注 給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input ...
51 nod 1009 數字1的數量
1009 數字1的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏 關注 給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input ...
51nod 1009 數字1的數量
1009 數字1的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 給定乙個十進位制正整數n,寫下從1開始,到n的所有正數,計算出其中出現所有1的個數。例如 n 12,包含了5個1。1,10,12共包含3個1,11包含2個1,總共5個1。input 輸入n 1 ...