1 条题解
-
0
C :
#include <stdio.h> int main(){ int n,i = 2; scanf("%d",&n); while(i < n){ i *= 2; } if(i - n < n - i / 2) printf("%d",i); else printf("%d",i/2); }C++ :
#include<iostream> using namespace std; int main(){ int n,i; cin>>n; i = 2; while(i < n){ i = i * 2; } if(i - n < n - i / 2){ cout<<i<<endl; }else{ cout<<i / 2 <<endl; } return 0; }Pascal :
var i:integer; n,t:int64; a:array[0..31] of int64; begin readln(n); t:=1; a[0]:=1; for i:=1 to 31 do begin t:=t*2; a[i]:=t; end; i:=0; while n>a[i] do inc(i); if (a[i]-n) >= (n-a[i-1]) then write(a[i-1]) else write(a[i]); end.Java :
import java.util.Scanner; public class Main{ public static void main(String[] args) { int n=new Scanner(System.in).nextInt(); int l1=0; int l2=0; for(int k=1;k<=n;k++){ if(Math.pow(2,k)<=n&&Math.pow(2,k+1)>=n){ l1=n-(int) Math.pow(2,k); l2=(int) Math.pow(2,k+1)-n; if(l1<=l2){ System.out.println((int) Math.pow(2,k)); }else{ System.out.println((int) Math.pow(2,k+1)); } } } } }Python :
a=int(input()) b=[] c=1 for i in range(1,33): b.append(c) c=c*2 for i in range(0,32): if(abs(b[i]-a)>=abs(b[i+1]-a) and abs(b[i+1]-a)<=abs(b[i+2]-a)): print(b[i+1]) break
- 1
信息
- ID
- 74
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者