列表

详情


NC54788. 小民与C语言

描述

小民今天在C语言课上学习了位运算。
他写下了一段程序:
long long n, a, b, i; for(a = 1, i = 1; i <= n; ++ i)     a &= i; for(b = 1, i = 1; i <= n; ++ i)     b |= i;
小民想知道a和b的值,但刚好下课了,你能帮帮他么?

输入描述

第一行包含一个整数n,含义见题

输出描述

输出一行两个整数,表示a和b的值

示例1

输入:

1

输出:

1 1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 3ms, 内存消耗: 368K, 提交时间: 2019-12-02 21:29:52

#include<stdio.h>
int main()
{
	long long n, a, b, i,c=1,sum=0;
	scanf("%lld",&n);
	if(n!=1) a=0;
	else a=1;
	while(sum<n)
	{
		sum+=c;
		c*=2;
	}
	b=sum;
	printf("%lld %lld",a,b);
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 484K, 提交时间: 2020-02-16 17:28:54

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long b,n,i,a=1;
	cin>>n;
	if(n>1)
	a=0;
	for(b=1,i=1;i<=n;i=b+1)
	b|=i;
	cout<<a<<" "<<b;
	return 0; 
}

Python3 解法, 执行用时: 43ms, 内存消耗: 4716K, 提交时间: 2022-01-22 18:18:50

n,b=int(input()),1
while b<n:b+=b+1
print(int(n == 1),b)

上一题