lab – Telegram
213 subscribers
367 photos
354 videos
21 files
324 links
ما اینجا میم میزاریم بینش پست آموزشی
Download Telegram
دوتا کد اینجا داریم یکی به پایتون یکی به سی پلاس پلاس

for _ in range(int(input())):
n, m, k = map(int, input().split())
b = list(map(int, input().split()))
c = list(map(int, input().split()))
ans = 0
for i in b:
for j in c:
if i + j <= k:
ans += 1
print(ans)

و همین کد به سی پلاس پلاس:

#include <bits/stdc++.h>
using namespace std;


int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while(t--){
int n, m, k, ans = 0;
cin >> n >> m >> k;
int b[n], c[m];
for (int i = 0; i < n; i++){
cin >> b[i];
}
for (int i = 0; i < m; i++){
cin >> c[i];
}
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
if (b[i] + c[j] <= k){
ans++;
}
}
}
cout << ans << '\n';
}
}


لینک مسئله:
https://codeforces.com/problemset/problem/1941/A
اگه بخوایم بخش پذیری عددی رو به یک عدد که توان دو هستش مثل (۲، ۴، ۸، ۱۶،...) چک کنیم. میتونیم با توان اون عدد توان دویی اندش (&) کنیم.
چرا کار میده؟ چون اعداد توان دو (توان برابر k) حداقل k بیت پایانیشون صفره.
پس بنابراین اگه اون عدد هم K بیت پایانیش صفر باشه به عدد ما بخش پذیره.
فرض کنیم میخوایم زوج و فرد بودن n رو چک کنیم به سادگی میتونیم با کد پایین فقط با چک کردن یک بیت این کارو انجام بدیم:
if (n & 1)
cout << "Odd";
else
cout << "Even";

حالا چرا یک؟ چون 2¹ میشه 2 و در اصل k اینجا 1 هستش. یعنی یک بیت پایانی 0 هست.
به همین ترتیب اگه بخوایم بخش پذیری رو به 4 چک کنیم عدد رو به 3 اند میکنیم. چون 2 بیت پایانی 0 هست.
تو مسئله هایی که تعداد زیادی چک کردن بخش پذیری لازمه این روش کمک کنندس برای کم کردن زمان اجرا.
👍3🔥3
به یک مسئله برخوردم خیلی ساده از ما میخاد که یک آرایه از اعداد ۲ به توان n رو به دو قسمت مساوی تقسیم کنیم به شکلی که کمترین اختلاف ارزشی رو این دو قسمت داشته باشن. حالا از ما مینیموم اختلاف رو میخاد. اول با این ایده پیش رفتم که هر بار بزرگترین عدد و کوچکترین عدد رو بزاریم تو یکی از قسمت ها تا اعدادمون تموم بشه ولی خب کار نداد.
در نهایت به این نتیجه رسیدم که اگه بزرگترین عدد رو بزاریم تو یک قسمت و (n/2 -1) عدد کوچک رو بزاریم تو همون قسمت و باقی اعداد رو بزاریم تو قسمت بعدی همیشه به کمترین اختلاف میرسیم. بعد داشتم به پیاده سازیش فکر میکردم که یه نکته عجیب تر دیدم و اون اینکه اگه فقط جمع اعداد این آرایه رو تا n/2 حساب کنیم مینیموم اختلاف رو بهمون میده. همچین چیزی:
#include <bits/stdc++.h>
#include <cmath>
using namespace std;

typedef long long ll;

// Solve function
void solve(){
ll n;
cin >> n;
ll ans = 0;
for (int i = 1; i <= n / 2; i++){
ans += pow(2, i);
}
cout << ans << "\n";
}

// Main function
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t = 1;
cin >> t;
while(t--){
solve();
}
return 0;
}

لینک مسئله:
https://codeforces.com/problemset/problem/1348/A
قبول دارم مسئله هایی که مطرح میکنم خیلی ساده ان ولی هرکدوم یه نکته قشنگی دارن.
👍4👏1
شکل کد رو ببین چه بامزه شد:

for _ in range(int(input())):
s = input()
if len(s) >= 3:
if int(s[0]) == 1 and int(s[1]) == 0 and int(s[2]) != 0:
if int(s[2]) == 1:
if len(s) >= 4:
print("YES")
continue
else:
print("NO")
continue
print("YES")
continue
print("NO")


مربوط به مسئله:
https://codeforces.com/problemset/problem/2000/A

منو یاد اون پروژه انداخت که طرف امده بود یک کدی نوشته بود که یک دونات رو با استفاده از یکسری کاراکتر جنریت میکرد.

             i,j,k,x,y,o,N;
main(){float z[1760],a
#define R(t,x,y) f=x;x-=t*y\
;y+=t*f;f=(3-x*x-y*y)/2;x*=f;y*=f;
=0,e=1,c=1,d=0,f,g,h,G,H,A,t,D;char
b[1760];for(;;){memset(b,32,1760);g=0,
h=1;memset(z,0,7040);for(j=0;j<90;j++){
G=0,H=1;for(i=0;i<314;i++){A=h+2,D=1/(G*
A*a+g*e+5);t=G*A *e-g*a;x=40+30*D
*(H*A*d-t*c);y= 12+15*D*(H*A*c+
t*d);o=x+80*y;N =8*((g*a-G*h*e)
*d-G*h*a-g*e-H*h *c);if(22>y&&y>
0&&x>0&&80>x&&D>z[o]){z[o]=D;b[o]=(N>0
?N:0)[".,-~:;=!*#$@"];}R(.02,H,G);}R(
.07,h,g);}for(k=0;1761>k;k++)putchar
(k%80?b[k]:10);R(.04,e,a);R(.02,d,
c);usleep(15000);printf('\n'+(
" donut.c! \x1b[23A"));}}
/*no math lib needed
.@a1k0n 2021.*/


اینجا میتونید بیشتر راجبش بخونید:
https://www.a1k0n.net/2011/07/20/donut-math.html
برا اینکه میخواسته خلاصه نویسی کنه موقع کامپایل باید یسری فلگ استفاده کنید که به کامپایلر بفهمونید از اخطار ها صرف نظر کنه.

ظاهر عادی کد همچین چیزی میشه:
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

#define R(mul,shift,x,y) \
_=x; \
x -= mul*y>>shift; \
y += mul*_>>shift; \
_ = 3145728-x*x-y*y>>11; \
x = x*_>>10; \
y = y*_>>10;

int8_t b[1760], z[1760];

void main() {
int sA=1024,cA=0,sB=1024,cB=0,_;
for (;;) {
memset(b, 32, 1760); // text buffer
memset(z, 127, 1760); // z buffer
int sj=0, cj=1024;
for (int j = 0; j < 90; j++) {
int si = 0, ci = 1024; // sine and cosine of angle i
for (int i = 0; i < 324; i++) {
int R1 = 1, R2 = 2048, K2 = 5120*1024;

int x0 = R1*cj + R2,
x1 = ci*x0 >> 10,
x2 = cA*sj >> 10,
x3 = si*x0 >> 10,
x4 = R1*x2 - (sA*x3 >> 10),
x5 = sA*sj >> 10,
x6 = K2 + R1*1024*x5 + cA*x3,
x7 = cj*si >> 10,
x = 40 + 30*(cB*x1 - sB*x4)/x6,
y = 12 + 15*(cB*x4 + sB*x1)/x6,
N = (-cA*x7 - cB*((-sA*x7>>10) + x2) - ci*(cj*sB >> 10) >> 10) - x5 >> 7;

int o = x + 80 * y;
int8_t zz = (x6-K2)>>15;
if (22 > y && y > 0 && x > 0 && 80 > x && zz < z[o]) {
z[o] = zz;
b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
}
R(5, 8, ci, si) // rotate i
}
R(9, 7, cj, sj) // rotate j
}
for (int k = 0; 1761 > k; k++)
putchar(k % 80 ? b[k] : 10);
R(5, 7, cA, sA);
R(5, 8, cB, sB);
usleep(15000);
printf("\x1b[23A");
}
}
👌1
امروز داشتم میرور استریم مسابقه icpc world final 2022 رو میدیدم.
چونکه از سنشوت گذشته نمیتونن رسمی داخل مسابقه شرکت کنن ولی چون خفنن هرسال دعوت میشن که سوالات رو حل کنن. یکیشون Gennady Korotkevich ملقب به tourist نفر اول جهان تو کدفورسز و یکی دیگشون هم Petr Mitrichev که روسیه و الان ۴۰ سالشه و اونم آدم خفنیه و الان تو گوگل مشغوله اون سومی هم آدم خفنیه ولی اسمش زیاد مهم نیست.
خیلی سوتی های باحالی میدن مثل سابمیت کردن یک سوال رو یک سوال دیگه. یا یجایی توریست یه تغییری تو کدش میده و باز سابمیت میکنه و هم تیمیش میگه سیو نکرده بودیا. بعد سیو می‌کنه و دوباره سابمیت می‌کنه و بازم اکسپت نمیگیره. اگه شرکت کرده باشین اینجور مسابقات این اتفاقات براتون آشناست.

لینک استریم:
https://youtu.be/yhp1WLp02nE?si=Gz852wznFBMR-B-K
👍3
مثل دروغ ۱۳ ما، خارجی ها هم April fool's day دارن.
روز اول ماه آوریل به دروغ و شوخی همدیگه رو دست میندازن.
بعد این باحاله که تو کدفورسز یک مسابقه ای این روز هرساله برگزار میشه که شکل سوال هاش بدونه توضیحن و باید خارج از منطق روشون فکر کنید.

تو مسئله بالایی نکته اینه که از بالا سمت چپ کاراکتر هایی رو که چراغ راهنمایی دارن کنار هم بزاریم و میشه print safety و در اصل سوال ازمون میخاد که کلمه safety رو چاپ کنیم
🔥2
lab
مثل دروغ ۱۳ ما، خارجی ها هم April fool's day دارن. روز اول ماه آوریل به دروغ و شوخی همدیگه رو دست میندازن. بعد این باحاله که تو کدفورسز یک مسابقه ای این روز هرساله برگزار میشه که شکل سوال هاش بدونه توضیحن و باید خارج از منطق روشون فکر کنید. تو مسئله بالایی…
از مسئله های مسابقه امروز این رویداد بود.
از این بازی شانسی هاست که یدونه توپ میندازی و باید از سوراخ های پایین رد بشه و برسه به منطقه سبز رنگ. حالا ازمون میخاد که ۱۰ بار پشت سر هم بازی رو ببریم.
تو هرکدوم از خونه های 0 تا 16 اگه بندازیم توپمون رو شانس این که هر ده بار بتونیم ببریم خیلی کمه.
ولی نکته مسئله اینجاست که منطقه سبز رنگ محدود نیست یعنی هر عددی بجز 0 تا 16 میتونه مارو برنده کنه.

مثال بارز خارج چارچوب فکر کردن.
🔥2👍1
lab
https://youtu.be/whaSGginU7g?si=jsH8usQPH1oQ7BDW
خیلی رندوم عکسامون رو تو لینکدین پیدا کردم. همچنان بهترین تجربه
سمت راست تصویر تیمی که دوم شد نشسته و سمت چپ تصویر تیم سوم
🥰6🔥1
Forwarded from PGTWEET | توییت برنامه نویسی (کنترل توییت برنامه نویسی)
debian10

#چالش_دسکتاپ
https://news.1rj.ru/str/PGTWEET/8455

👨‍💻/ @PGTWEET \👩‍💻

Matin
lab
از شخصی سازی هایی که انجام دادید روی هر پلتفرمی( دسکتاپ لینوکس ویندوز مک، ویم، ترمینال و...) بفرستید به رای میزاریمشون و به نفر اول پنج دلار جایزه میدیم @matinabbasi788 اینجا بفرستید Join us
البته تو همین چنل هم داشتیم قدیم ترا از این مسخره بازیا که پنج دلار پول بی زبون به دلار دونه ای ۳۷ هزارتومن جایزه دادیم که اگه همونارو نگه داشته باشه الان ۵۰۰ داره😂
میخام یه حرکتی بزنم به دیتا های چت تلگرامم نیاز دارم. دارم از اون پایین یکی یکی اکسپورت میگیرم.
تو یسری هاش واقعن کیرینج بودما😂