日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【最优解法】1087 有多少不同的值 (20分)_17行代码AC

發(fā)布時間:2024/2/28 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【最优解法】1087 有多少不同的值 (20分)_17行代码AC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

立志用最少的代碼做最高效的表達


PAT乙級最優(yōu)題解——>傳送門


當自然數(shù) n 依次取 1、2、3、……、N 時,算式 ?n/2?+?n/3?+?n/5? 有多少個不同的值?(注:?x? 為取整函數(shù),表示不超過 x 的最大自然數(shù),即 x 的整數(shù)部分。)

輸入格式:
輸入給出一個正整數(shù) N(2≤N≤104)。

輸出格式:
在一行中輸出題面中算式取到的不同值的個數(shù)。

輸入樣例:
2017
輸出樣例:
1480


分析

我采用的是打表法,從小至大, 每一個數(shù)字的結(jié)果建立在前一個數(shù)字之上。 時間復雜度為O(n)

第一次提交出現(xiàn)了段錯誤, 仔細思考后發(fā)現(xiàn), ?n/2?+?n/3?+?n/5?是可以大于n的。

于是加了限定條件,再次提交。 最后一個測試點錯誤。

原因: 當n取10000時,需要我們計算的是N=10333的值,因此數(shù)組的范圍需要大于10333。擴大數(shù)組后,AC。


代碼

#include<bits/stdc++.h> #define Max 11010 using namespace std; int a[Max], b[Max]; int main() {for(int i = 1; i < Max; i++) {b[i] = b[i-1]; int x = (int)(i/2.0) + (int)(i/3.0) + (int)(i/5.0);if(x<Max && a[x] == 0) {a[x] = 1; b[i] += 1;} }int n; cin >> n;cout << b[n] << '\n';return 0; }

耗時


博主碎碎念:PAT沖沖沖! ACM沖沖沖!

總結(jié)

以上是生活随笔為你收集整理的【最优解法】1087 有多少不同的值 (20分)_17行代码AC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。