記錄一下自己打得如此渣渣還是進了前120,希望面試能順利,要求不高,第60名就好,我想要獎品😜順便求獎狀啊我要獎學金加分(有錢)
題目暫時還沒有,就憑着記憶來吧
第一題
這是一道坑題,題意理解錯了,是歌曲已經下載的秒數不是從下載到開始過了多少秒。。。
其實就算是一道追及問題吧,求一下下一次重頭播放的時候是第幾秒
代碼等有題目了再更
第二題
唔。。這也是坑題一道啊,我看了半天,快1.5小時的時候才改過來,超級浪費時間。。。
求D(x)
這就是一道數學題,求的最大值,其實就是求導。
至於 怎麼求,這就是高數的知識了,對原式先取對數,也就是對求導
推導過程就不寫了,不會的話翻高數書吧(可能某些地區的高考知識。。)
最後求得
所以在代碼裏直接y=x/e就好
判斷是有限小數還是無限小數
其實對於有限小數,就是要整除10^n,因此當且僅當分母只是2和5的倍數時才行。
不過有一個小坑在於記得分子分母需要先約分一下,用gcd求一下就好
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {return a%b==0?b:gcd(b,a%b);}
//判斷是不是有限小數
bool yes(int n){
while (n%2 == 0) n /= 2;
while (n%5 == 0) n /= 5;
if (n == 1) return true;
return false;
}
int main()
{
double n, i;
double e = exp(1);
long long s;
cin >> n;
if (n < 5) {
cout << 0 <<endl;
return 0;
}
s = 0;
for (i = 5; i <= n; i++) {
int k = int(i/e+0.5);
int x = gcd(int(i),k);
k /= x;
bool ok = yes(k);
if(ok) s -= int(i);
else s += int(i);
}
printf("%lld\n", s);
return 0;
}
第三題
第三題題意又有點坑。。需要所有連續x個都滿足才行。。。
感覺讀懂題其實就沒什麼難點了
求出最壞情況就好
這個代碼好像本地保存有一點問題,可能最後是在網上直接修改的,我稍微修改了一下,不能保證一定是對的,等題目出來了再檢查一下,但思路是沒問題的。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1000005];
int main()
{
ll n, x, c, m, i, j, s, k;
cin >> n >> x >> c >> m;
memset(a, 0, sizeof(a));
for (i = 0; i < m; i++) {
scanf("%lld", &j);
a[j-1]++;
}
s = 0;
j = 0;
for (i = 0; i < x-1; i++) {
j += a[i];
}
for (i = x-1; i < n; i++) {
j += a[i];
k = i;
while (j < c) {
while (a[k]==1) {
k--;
}
a[k]++;
j++;
s++;
k--;
}
j -= a[i-x+1];
}
cout << s << endl;
return 0;
}
其他未完待續。。