Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
Hệ thập phân (cơ số 10) là hệ cơ số mà con người chúng ta sử dụng hàng ngày trong cuộc sống. Thế nhưng, chiếc máy tính của chúng ta lại chỉ có thể làm việc với hệ nhị phân (cơ số 2).
Ví dụ:
- ~8_{10} = 1000_{2} = 1*2^3 + 0*2^2 + 0*2^1 + 0*2^0~
Yêu cầu:
Cho một số nguyên dương trong hệ cơ số ~10~, hãy viết số đó trong hệ cơ số ~2~ (hệ nhị phân).
Input
- Dòng đầu ghi số nguyên dương ~T~ là số bộ test;
- ~T~ dòng tiếp theo, mỗi dòng chứa một số nguyên dương ~n~ trong hệ thập phân.
Giới hạn:
- ~1 ≤ T ≤ 10^5, 1 ≤ n ≤ 10^{18}~
Output
- Với mỗi số nguyên dương ~n~ trong hệ thập phân, in ra trên một dòng xâu nhị phân biểu diễn số đó trong hệ nhị phân (không bắt đầu bởi số ~0~).
Sample
Input #1
3
5
7
10
Output #1
101
111
1010
Problem source: Chuyên Sơn La Online Judge
Bình luận
j
C++ FULL AC NHA
include<bits/stdc++.h>
using namespace std;
int main()
{
}
sao bạn lại chép code của mình, học cùng trường mà lấy code mình để làm gì
code full AC nha
include<bits/stdc++.h>
using namespace std;
int main()
{
}
strong textstring nto( long long n){ string result ; while (n){ result = to_string(n%2) + result; n/=2; } return result; }
Tham khảo
include<bits/stdc++.h>
using namespace std; int main() { int a[100]; long long t, n; cin>>t; while(t--){ int dem=0; cin>>n; while(n!=0){ a[dem]=n%2; n/=2; dem++; } for(int i=dem-1;i>=0;i--){ cout<<a[i]; } cout<<endl; } return 0; }
mình dùng scratch test đến trường hợp 9007199254740993/2 = 4.503.599.627.370.496 chứ kết quả không phải 4.503.599.627.370.496,5 sửa làm sao giờ
include <bits/stdc++.h>
using namespace std;
int main() { long long b[100000],j,s,i,n,a[100000]; cin>>n; for(i=1;i<=n;i++) { cin>>b[i]; } for(i=1;i<=n;i++) { s=b[i]; int z=0; while(s>0) { z++; a[z]=s%2; s=s/2; } for(j=z;j>0;j--) cout<<a[j]; cout<<endl; } return 0; }
include <stdio.h>
void dec2bin(long long n) {
}
int main() {
} Full test
Long long có chứa dc 10 mũ 18 ko mn
đc bạn ơi
ai bt test10 là j ko vậy
dưới đây là solve của mình khá đơn giản thôi:))
các bạn cứ suy nghĩ đơn giản đó là nếu n chia 2 dư 1 thì cộng số 1 vào xâu s theo kiểu cộng số vào đầu của xâu s còn nếu n chia 2 dư 0 thì cộng 0 và đầu xâu s và kết quả chính là xâu s(các bạn có thể lên mạng tìm hiểu cách đổi hệ thập phân sang hệ nhị phân mình có để link ở đây cho bạn nào muốn tham khảo: https://www.wikihow.vn/%C4%90%E1%BB%95i-t%E1%BB%AB-S%E1%BB%91-Th%E1%BA%ADp-ph%C3%A2n-sang-Nh%E1%BB%8B-ph%C3%A2n cách mình làm là cách đầu tiền trong link trên.
mình ko cần phải đảo lại à bạn? bạn giải thích giúp mình với
lúc cộng xâu, bạn ấy s = '0' + s vd: xâu hiện tại là 10 thì s='0'+s là 010, nó khác với s = s+'0'
minh cũng có 1 cách khác tg tự b #include<iostream>
include<string.h>
using namespace std;
void chuyendoihethapphan(long long int n) { long long x[1000005]; int dem=0; while(n!=0) { x[dem]=n%2; ++dem; n/=2; }
}
int main() { long long int T,x[100005];
for(int i=0;i<T;i++) { chuyendoihethapphan(x[i]); cout<<"\n"; } }
Đây là bài thi kết thúc thực hành IT1110 Bách Khoa Hà Nội. Và phòng thi của mình(lớp Điện tử viễn thông) chỉ có 1 bạn AC.
mình k68 bk nè
hôm đi thi 30' mình viết 1 vòng while vét được 6/10 test.
ac bài này là 10 điểm thực hành đấy em. bộ test của các thầy cô chắc cũng chỉ như thế này thôi.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
test 2 là sao ạ
cho em hỏi test case 2 là gì vậy ạ
bạn xem lại code đã đúng với điều kiện đề bài các số có thể lên đến 10^18 chưa nhé.
Mọi người làm ơn xem giúp em tại sao task 3 em lại sai với ạ kết quả ra khác giá trị cuối cùng 1 ạ
Đoạn mã C++ của bạn không có lỗi cú pháp, nhưng có thể gặp vấn đề về hiệu suất khi giá trị của n rất lớn do việc sử dụng hàm pow(2, j) nhiều lần trong vòng lặp. Một cách tốt hơn để giải quyết vấn đề này là sử dụng phép dịch bit thay vì hàm pow như sau:
include<stdio.h>
int main(){ int T; scanf("%d",&T); while(T--){ long long n; scanf("%lld",&n); int bit[64] = {0}; int j = 0; while(n > 0){ bit[j++] = n % 2; n /= 2; } for(int i = j - 1; i >= 0; i--){ printf("%d", bit[i]); } printf("\n"); } return 0; }