[THỬ THÁCH CHO trumtinhoc và những người khác] Ngôn ngữ: C++ Hãy lập trình một keygen (phần mềm tạo mã số) Dạng mã số (key): XXX-YYYYYYY Luật mã số: - ba số đầu tiên (XXX) KHÔNG ĐƯỢC BAO GỒM CÁC SỐ TRÊN: 333, 444, 555, 666, 777, 888, 999 - bảy số cuối (YYYYYYY) tất cả chữ số cộng lại PHẢI CHIA HẾT CHO 7 và chữ số cuối KHÔNG BAO GỒM 0 hay ≥8 Luật lập trình: không được dùng header bất kỳ, không được copy qua mạng (ví dụ: github, pastebin) Ví dụ: 527-7043007 527 ≠ 333; 444; 555; 666; 777; 888; 999 ⇒ hợp lệ 7043007 7+0+4+3+0+0+7 = 21 21 / 7 = 3 (chia hết) 7 là số cuối của 7043007, 7 < 8 ⇒ hợp lệ
2 câu trả lời
#include <bits/stdc++.h>
using namespace std;
int getx(){
srand(time(NULL));
int kq=rand()%(999-100+1)+100;
if (kq==333 || kq==444 || kq==555 || kq==666 || kq==777 || kq==888 || kq==999)
return getx();
return kq;
}
bool kt(int n){
bool kq=0;
int s=0;
while (n!=0) {
s+=n%10;
n/=10;
}
return (s%7==0);
}
int gety(){
srand(time(0));
int kq=rand()%(9999999-1000000+1)+1000000, t=0;
while (kq%10==0 || kq%10>=8 || !kt(kq)) ++kq;
return kq;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cout<<getx()<<"-"<<gety();
}
#include <iostream>
using namespace std;
#define ll long long
#define ord(a) int(a)
int x, y;
int sumDigits(int n) {
string s = to_string(n);
ll res = 0;
for(int i = 0; i < s.size(); ++i) res += ord(s[i]) - 48;
return res;
}
void xKey() {
srand(time(NULL));
x = rand() % (999 - 100 + 1) + 100;
while(x == 333 && x == 444
&& x == 555 && x == 666
&& x == 777
&& x == 888 && x == 999) --x;
}
void yKey() {
srand(time(NULL));
y = rand() % (9999999 - 1000000 + 1) + 1000000;
while((y % 10 == 0 || y % 10 >= 8) || sumDigits(y) % 7 != 0) --y;
}
int main() {
xKey();
yKey();
cout << x << '-' << y;
}