Nguồn đề bài: http://www.spoj.com/PTIT/problems/P167PROD/
1. Đề bài P167PROD spoj
Cho đẳng thức a + b = c, trong 3 số này có 1 số bị mờ đi một chữ số (được thay bằng dấu ?), hãy tìm chữ số đó.
Input
- Dòng đầu chứa một số nguyên không âm a;
- Dòng thứ hai chứa một số nguyên không âm b;
- Dòng thứ ba chứa một số nguyên không âm c;
Cả ba số đều không vượt quá 106. Một trong ba số sẽ bị thay một vị trí bằng dấu ?.
Output
- Gồm một dòng chứa một số chữ số là kết quả tương ứng của bộ test trong dữ liệu vào.
Example
Input:
128
?2
200
Output:
7
2. Code c++ P167PROD spoj PTIT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include <stdio.h> #include <string.h> using namespace std; int pos(char s[10]) { int i; for (i=0; i<strlen(s); i++) { if (s[i]=='?') return i; } return -1; } int strtonum(char s[10]) { int i,sum=0,mul=1; for (i=strlen(s)-1; i>=0; i--) { sum=sum+(s[i]-48)*mul; mul=mul*10; } return sum; } int main() { char a[10],c[10],b[10]; scanf("%s \n",&a); scanf("%s \n",&b); scanf("%s \n",&c); int pa=pos(a),pb=pos(b),pc=pos(c),na,nb,nc; if (pa==-1) na=strtonum(a); if (pb==-1) nb=strtonum(b); if (pc==-1) nc=strtonum(c); int tmp,i; if (pa!=-1) { for (i=0; i<=9; i++) { a[pa]=i+48; tmp=strtonum(a); if (tmp+nb==nc) { printf("%d",i); return 0; } } } if (pb!=-1) { for (i=0; i<=9; i++) { b[pb]=i+48; tmp=strtonum(b); if (na+tmp==nc) { printf("%d",i); return 0; } } } if (pc!=-1) { for (i=0; i<=9; i++) { c[pc]=i+48; tmp=strtonum(c); if (na+nb==tmp) { printf("%d",i); return 0; } } } return 0; } |
Bài viết liên quan
- Spoj PTIT PTIT016C – ACM PTIT 2016 C – Chẵn lẻ
- P156SUME spoj PTIT – ROUND 6E – Ước chung của chuỗi
- P156PROE spoj PTIT – ROUND 6E – Phép dịch
- P156SUMH spoj PTIT – ROUND 6H – Kim cương
- P151SUMI spoj PTIT – Bóng đá
- BCBASEAD spoj PTIT – Phép cộng cơ sở
- PTIT122F spoj PTIT – Số siêu tự nhiên
- PTIT121K spoj PTIT – Đường đi lớn nhất
- PTIT121I spoj PTIT – Lặp lại các kí tự
- PTIT013A spoj PTIT – Số may mắn