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
Số chính phương là số tự nhiên mà căn bậc hai của nó là một số tự nhiên. Hoặc nói ngược lại, số chính phương là số bằng bình phương của một số tự nhiên. Nhiệm vụ của bạn là viết chương trình kiểm tra một số nguyên ~n~ nhập vào từ bàn phím có phải là số chính phương hay không?
Input
Số nguyên ~n~ cần kiểm tra có phải số chính phương hay không
Giới hạn
- ~-10^{12} \le n \le 10^{12}~
Output
Kết quả kiểm tra số chính phương. Nếu số kiểm tra là số chính phương, in ra "YES", ngược lại in ra "NO". Kết quả in ra không có dấu nháy kép
Sample
Input #1
9
Output #1
YES
Bình luận
code c++ không dùng hàm có sẵn
Python có thể dùng ** 0.5 thay cho sqrt
include <bits/stdc++.h>
using namespace std; long long n,s=0; int main() { cin>>n; s=sqrt(n); if(s*s==n) cout<<"YES"; else cout<<"NO"; return 0;
}
import math
x = float(input()) if x<0: print("NO") else: can = math.sqrt(x) y = int(can) if y*y==x: print("YES") else: print("NO")
Dạ cho em hỏi là case test 2 là gì ạ.
import math
chinhphuong = int(input("")) if math.sqrt(chinhphuong) - math.sqrt(chinh_phuong) // 1 == 0: print("YES") else: print("NO")
test 2 là về phần số âm nha em phải kiểm tra trước có số âm không thì mới căn bậc 2 được.
import math x = float(input()) if x<0: print("NO") else: can = math.sqrt(x) y = int(can) if y*y==x: print("YES") else: print("NO")
sos
Sao tôi lại bị sai test 3
chinh lai long long la duoc nha, ban dau minh cung sai nhu ban
include <stdio.h>
include <math.h>
using namespace std;
long long int n,x; int main() { scanf("%lld",&n); x=sqrt(n); if(x*x==n) printf("YES"); else printf("NO"); }
gui code tap lam hao no ak hung
include <bits/stdc++.h>
using namespace std; long long n; int main(){ cin >> n; long long m = sqrt(n); if(m * m == n){ cout << "YES"; } else cout << "NO"; return 0; } code C++ nhé ^^
include <bits/stdc++.h>
using namespace std; long long n; int main(){ cin >> n; long long m = sqrt(n); if(m * m == n){ cout << "YES"; } else cout << "NO"; return 0; }
DENO :
#include <stdio.h> #include <math.h> void scp(long long n){ long long a=sqrt(n); if(a*a==n){ printf("YES"); } else{ printf("NO"); } } int main(){ long long n; scanf("%lld",&n); scp(n); }
nếu bị sai ở test 3 và test cuối hãy thử sửa như này xem: using System; using System.Numerics;
class luyentap { static void Main(string[] args) { BigInteger n = BigInteger.Parse(Console.ReadLine()); BigInteger i=0; while (ii<=n){ if(ii==n){ Console.Write("YES"); return ; } ++i; } Console.Write("NO"); } }
include <bits/stdc++.h>
define ll long long
using namespace std;
int main() { ll n; cin >> n; if (sqrt(n)==floor(sqrt(n))) cout << "YES"; else cout << "NO" ; }
include<iostream>
include<math.h>
using namespace std;
int main() { long long n; cin>>n; long long h=sqrt(n);
} // moi nguoi ai bi sai thi xem thu code cua minh nhe
test 5 là j mọi người nhỉ
ủa test 6 test j vậy mn sao dùng sqrt không ac test 6
include <bits/stdc++.h>
define ll long long int
using namespace std;
int main () { ll n; cin>>n; if (sqrt(n)*sqrt(n)==n) cout<<"YES"; else cout<<"NO"; }
test 6sai la sao
hao no
hao no
test 5 là gì vậy mọi người
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
n = int(input()); if n<0:print('NO'); else: print('YES' if n**0.5%1==0 else 'NO')
import java.util.Scanner; public class Luyencodemoingay { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n= sc.nextLong(); long can= (long)Math.sqrt(n); if (n>0){ if((long)can*can==n){ System.out.println("YES"); } else{ System.out.println("NO"); } }
} mn ơi em bị nào mà nó cứ wa
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
import math n = int(input()) if n<0: print("NO",end='') else: cp = int(math.sqrt(n)) if cp**2== n: print ("YES",end='') else: print ("NO",end='')
CODE DAY NE AE EASY GAME chỉ toàn sai nhe mọi ng đừng tin vào nguồn này nhe
int(input()) if n<0: print("NO",end='') else: cp = int(math.sqrt(n)) if cp**2== n: print ("YES",end='') el
long long khỏi bị tràn số
hướng dẫn chỉ có c/c++ nên mình thêm tý bên python3 ạ: math.sqrt sẽ trả về float nên chúng ta sửa là int(math.sqrt()) nha, lỗi mình gặp mình chia sẻ ạ.
import math n = int(input()) if n<0: print("NO",end='') else: cp = int(math.sqrt(n)) if cp**2== n: print ("YES",end='') else: print ("NO",end='')
CODE DAY NE AE EASY GAME
nếu cho n = 2 thì chương trình vẫn chạy sai thôi bạn,thêm điều kiện nữa nếu n = 2 thì in ra YES nhé
Hai có phải là số chính phương đâu?
nên làm cho người nộp xem test nha, chứ cứ nnay khbt sai ở đâu mà sửa ý admin
làm cách nào cũng không được :(( cuối cùng mình dùng chính code trên trang này để gửi mà vẫn báo sai https://blog.luyencode.net/kiem-tra-so-chinh-phuong/
Bài này mai em quay lại sẽ có Editorial nhé.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
mik sai ở test 3 thì sao bn :)))
kiểm tra code xem lưu về long long chưa nhé. giới hạn đến mũ 12 lưu int bị tràn số sai là phải
thanh kiu nha mik bj tràn số thật :))
ủa sao bài này em lại bị false v? rõ ràng là dùng y nguyên code cũ lúc trước accept r nhét vào nma lại bị sai
Giới hạn là 10^12 á bạn, bạn thử chỉnh đoạn đấy xem.