2048
输入2,4,8,16,32,64,128,256,512,1024的个数,计算出加出2048的最小次数
基本思路:
从最大的开始加,一旦达到2048就跳出,因为最初相加是用0加的,所以要减去这一次
#include<iostream>
#include<string>
using namespace std;
int main()
{
int T,count=0,sum=0;
cin>>T;
int a[10]={};
for(int i=1;i<10;i++)
{
a[0]=2;
a[i]=a[i-1]*2;
}
int b[10]={};
int c[5]={};
for(int i=0;i<T;i++)
{
for(int j=0;j<10;j++)
{
cin>>b[j];
}
for(int k=9;k>=0;k--)
{
for(int m=1;m<=b[k]&&sum+a[k]<=2048;m++)
{
sum=sum+a[k];
if(sum==2048)
{
count++;
break;
}
if(sum<2048)
{
count++;
}
}
if(sum==2048)
{
break;
}
}
sum=0;
c[i]=count-1;
count=0;
}
for(int i=0;i<T;i++)
{
cout<<c[i]<<"\n";
}
}

该博客探讨了如何使用C++编程实现从特定数值集合(2, 4, 8, ..., 1024)中加法达到2048的最小次数。核心思路是从最大数值开始累加,一旦总和达到2048则停止,由于初始和为0,因此需减去这一初始操作。"
111058742,8181817,Linux内核CPU优化:从伪共享到软中断,"['Linux', '内核技术', '性能分析', '系统调用', '中断处理']
2367

被折叠的 条评论
为什么被折叠?



