空间
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long ans = 256*1024/32;
cout << ans*1024*8 << endl;
return 0;
}
卡片
#include <iostream>
using namespace std;
int cnt[15];
int main()
{
for(int i=0;i<=9;i++) cnt[i]=2021;
int i;
for(i=1;;i++){
int t=i;
while(t){
if(cnt[t%10]==0){
cout<<i-1;
return 0;
}
cnt[t%10]--;
t/=10;
}
}
return 0;
}
货物摆放
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL a[101000],cnt;
int main()
{
LL n=2021041820210418;
for(LL i=1;i<=n/i;i++){
if(n%i==0){
a[++cnt]=i;
if(i*i!=n)
a[++cnt]=n/i;
}
}
int ans=0;
for(int i=1;i<=cnt;i++){
for(int j=1;j<=cnt;j++){
if(n%(a[i]*a[j])==0)
ans++;
}
}
cout<<ans;
return 0;
}
时间显示
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n;
scanf("%lld",&n);
n/=1000;
n%=(24*60*60);
int ss=n%60;
n/=60;
int mm=n%60;
n/=60;
int hh=n%60;
n/=60;
printf("%02d:%02d:%02d",hh,mm,ss);
return 0;
}
砝码称重
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110, M = 2e5 + 10;
int n,m;
int a[N];
bool dp[N][M];//dp[i][j]表示前i个砝码,称出j的集合
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],m+=a[i];
dp[0][0]=true;
for (int i = 1; i <= n;i++)
for (int j = 0; j <=m;j++)
dp[i][j]=dp[i-1][j]||dp[i-1][j+a[i]]||dp[i-1][abs(j-a[i])];
int ans=0;
for(int i=1;i<=m;i++)
if(dp[n][i])
ans++;
cout<<ans;
return 0;
}
杨辉三角
#include<bits/stdc++.h>
using namespace std;
int M[3001][3001];
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n+1&&i<=3000;i++){
M[i][i]=1;
M[i][1]=1;
}
for(int i=3;i<=n+1&&i<=3000;i++){
for(int j=2;j<i;j++){
M[i][j]=M[i-1][j]+M[i-1][j-1];
}
}
int num=1;
for(int i=1;i<=n+1&&i<=3000;i++){
for(int j=1;j<=i;j++){
if(M[i][j]==n){
printf("%d",num);
return 0;
}else{
num++;
}
}
}
return 0;
}