输入数据为T组(T <= 10000),每组数据读入一个n(n<=1000000000)
一行一个整数代表能获得的最大高兴值
#include
#define ll long long int
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll n,x=1,s=0;
scanf("%lld",&n);
while(n>1)
{
x=1;
while(x<=n)
{
x<<=1;
}
x>>=1;
s+=(x-1);
n-=x;
}
printf("%lld\n",s);
}
}
Zhazhahe竟然能二到把耳机扔到洗衣机里去洗,真的是二到了一种程度,现在我们需要判断一下zhazhahe二的程度(就是计算zhazhahe的脑残值有几个2的因子),下面给你一个n,n!表示zhazhahe的脑残值。
输入一个正整数t(0
输出一个正整数表示zhazhahe二的程度
#include
#define ll long long int
int main()
{
ll t;
scanf("%lld",&t);
while(t--)
{
ll n,x=1,s=0;
scanf("%lld",&n);
while(n>1)
{
x=1;
while(x<=n)
{
x<<=1;
}
x>>=1;
s+=(x-1);
n-=x;
}
printf("%lld\n",s);
}
}
由于女生节准备到了,ming打算给班上女生送一份大礼。没错,就是数学练习册!
ming先前就已经收藏了 n 本练习册了,一直不舍得做,这次突然决定把它们都拿出来当作礼物送出去!
但是,ming班上一共有 4 个女生,为了不要显得自己偏爱哪一个,他觉得每个女生都应该分到同等数量的练习册。
这样的话,原来的 n 本就可能不太够了。于是他去逛亚马当商城。
他发现,最近ACM(Association of Counting Method)又出版了好多新版数学练习册:高数、线代、离散、概率论…
而且商店有三种促销优惠套餐:
第一种:任选 1 本练习册,送欧几里德主题套尺。只需 a 个比特币;
第二种:任选 2 本练习册,送莱布尼兹同款2B铅笔。只需 b 个比特币;
第三种:任选 3 本练习册,送爱因思坦专用橡皮擦。只需 c 个比特币。
那么问题来了:吃土ming如何用最少的比特币购买若干本练习册,使得全部(包括原来的n本)可以平分给四个女生?
每组输入是一行四个整数:n,a,b,c(1 <= n,a,b,c <= 1e9)意思如题目描述。
对每组输入,输出一行一个整数,表示ming要花的最少的比特币数。
#include
#include
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long int n,a,b,c;
scanf("%lld%lld%lld%lld",&n,&a,&b,&c);
long long int s=4-n%4;
if(s==4)
printf("0\n");
else
{
long long int k;
if(s==3)
k=min(min(a*3,(a+b)),c);//购买3本所需要的最小代价
else if(s==2)
k=min(min(2*a,b),c*2);//购买2本所需要的最小代价
else
k=min(min(a,c*3),c+b);//购买1本所需要的最小代价
printf("%lld\n",k);
}
}
}
涟漪进入集训队后,他会去实验室训练或者去操场锻炼。 接下来n天,每天的情况是一下4种中的一种: 1.当天体育馆关门了和没有训练赛 2.当天体育馆关门了和有训练赛 3.当天体育馆开放和没有训练赛 4.当天体育馆开放和有训练赛 涟漪知道之后n天的情况。 涟漪每一天可以休息,或者打训练赛(当天有训练赛)或者运动(当天体育馆开放)。 涟漪要制定一个训练计划,决定每天干什么,但是涟漪不会连续两天都运动或者连续两天都打训练赛, 请帮涟漪找出她最少休息的天数(她不打训练赛和运动)。 休息的时候,她会做下面的数学题
输出 一个数 表示(涟漪休息的天数) 乘以(数学题的答案的积)。
#include
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long int n,i,s=0;
scanf("%lld",&n);
long long int ans=0,cnt=0;//ans记录前一天训练的状态,cnt记录前一天运动的状态
for(i=0; i
#include
#include
using namespace std;
const int N=100000+10;
struct zxc
{
int xx,mm;
} a[N];
bool cmp(struct zxc x,struct zxc y)
{
return x.mm>t;
while(t--)
{
int n,i,j;
cin>>n;
for(i=1; i<=n; i++)
{
a[i].xx=i;//记录原先所在的位置
cin>>a[i].mm;
}
stable_sort(a+1,a+n+1,cmp);//稳定排序
int tot=0;
i=1;
while(i<=n)
{
tot++;
int k=a[i].xx;
for(j=i; j<=k; j++)//相交的区间合并
if(a[j].xx>k)
k=a[j].xx;
i=k+1;
}
cout<
#include
#include
#include
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
stacks;
int n,i,k;
scanf("%d",&n);
for(i=0; ib)
printf("%d %d\n",b,a);
else
printf("%d %d\n",a,b);
}
}