每日总结3.24
第十届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
183.完全二叉树的权值(找规律,临界值)
#include <bits/stdc++.h>
using namespace std;
int a[1000005];
int main()
{
int m;int d;
cin>>m;
int sum;int maxn=0;
for(int i=1;i<=m;i++)
{
cin>>a[i];
}
for(int i=1;pow(2,i-1)<=m;i++)
{
sum=0;
for(int j=pow(2,i-1);j<pow(2,i)&&j<=m;j++)
{
sum+=a[j];
}
if(sum>maxn)
{
maxn=sum;
d=i;
}
}
cout<<d;
return 0;
}
1.组队(√)
2.年号字串(√)
(可理解为十进制转二十六进制)
#include <stdio.h>
void calc(int a) {
if (a > 26)
calc(a / 26);
printf("%c", 'A' + (a % 26) - 1);
}
int main() {
calc(2019);
return 0;
}
3.数列求值
#include <iostream>
using namespace std;
#define int long long
signed main()
{
int a=1,b=1,c=1,d;
for(int i=4;i<=20190324;i++)
{
d=(a+b+c)%10000;
a=b;
b=c;
c=d;
}
cout<<d;
return 0;
}
4.数的分解
#include <iostream>
using namespace std;
bool jugde(int num)
{
while(num)
{
if(num%10==4||num%10==2)
{
return false;
}
num/=10;
}
return true;
}
int main()
{
int ans=0;
for(int i=1;i<2019;i++)
{
for(int j=i+1;j<2019;j++)
{
int k=2019-i-j;
if(jugde(i)&&jugde(j)&&jugde(k)&&i<j&&j<k)
{
ans++;
}
}
}
cout<<ans;
return 0;
}
5.特别数的和
#include <bits/stdc++.h>
using namespace std;
bool temp(int a)
{
while (a)
{
int x=a%10;
if(x==2||(x==0&&a>=10)||x==1||x==9)
{
return true;
}
a/=10;
}
return false;
}
int main()
{
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++)
{
if(temp(i))
{
ans+=i;
}
}
cout<<ans;
return 0;
}
6.完全二叉树的权值
#include <bits/stdc++.h>
using namespace std;
int a[1000005];
int main()
{
int m;int d;
cin>>m;
int sum;int maxn=0;
for(int i=1;i<=m;i++)
{
cin>>a[i];
}
for(int i=1;pow(2,i-1)<=m;i++)
{
sum=0;
for(int j=pow(2,i-1);j<