BCACM11A spoj PTIT – Phương án khuyến mãi

acm_ptit_11

Trong ngày đầu tiên phát hành các số điện thoại di động “0913.xxx.xxx”, với sáu chữ số cuối tạo thành 1 số có 6 chữ số (không có chữ số 0 ở đầu) , công ty VINAPHONE dự định khuyến mại cho N khách hàng đăng ký trước nhất các số điện thoại loại 1, M khách hàng kế tiếp số điện thoại loại 2 và K khách hàng cuối cùng các số điện thoại loại 3. Các số điện thoại loại 1, loại 2 và loại 3 có tính chất sau:

  • Số Loại 3: là các số điện thoại mà sáu số cuối cùng của nó tạo thành một số thuận nghịch có sáu chữ số. Ví dụ số : 0913.257752.
  • Số Loại 2: là các số điện thoại Loại 3 có tổng sáu số cuối cùng của nó là một số chia hết cho 10. Ví dụ số : 0913.104401.
  • Số Loại 1: là các số điện thoại Loại 2 có sáu số cuối cùng của nó không chứa bất kỳ số 0 nào. Ví dụ số : 0913.686686.

Bài toán được đặt ra là cho trước một phương án N, M, K, hãy trả lời “YES” nếu công ty VINAPHONE thực hiện được, trả lời “NO” nếu công ty không thực hiện được.

Input : Dòng đầu tiên ghi số bộ test, không lớn hơn 100. Mỗi bộ test là một bộ 3 số N, M, K được ghi trên một dòng. Các số được ghi cách nhau một vài khoảng trống.

Output: Với mỗi bộ test, in ra màn hình trên một dòng giá trị “YES” hoặc “NO” tương ứng với phương án thực hiện được, hoặc phương án không thực hiện được.

Example

Input:
5
100 100 200
50 150 200
100 50 300
120 50 500
140 50 700
Output:
NO
NO
YES
YES
NO

code tham khảo:

const   fi='';

type
        data=longint;
var
        f:text;
        test,n,m,k,i:data;
        nmax,mmax,kmax,x:data;
begin

        assign(f,fi); reset(f);
        readln(f,test);     nmax:=145;
        for i:=1 to test do
                begin
                        readln(f,n,m,k);
                        if n<=145 then
                                begin
                                        if m<=145-n+35 then
                                                begin
                                                        if k<=nmax-n+35-m+720 then
                                                                begin
                                                                        writeln('YES');
                                                                        continue;
                                                                end;
                                                end;
                                end;
                        writeln('NO');

                end;
end.

Code c++

#include <stdio.h>
using namespace std;

int test,i,k,m,n;

void xuli()
{
    if ((n<=145) && (m<=180-n) && (k<=900-m-n))
        {
            printf("YES\n");
            return;
        }
    printf("NO\n");
}

int main()
{
    scanf("%d",&test);
    for (i=1; i<=test; i++)
    {
        scanf("%d %d %d",&n,&m,&k);
        xuli();
    }
}

Code c++

#include"bits/stdc++.h"
int a(int n)
{
     int a;
     while(n>0)
          {
               a=n%10;
               if(a==0) return 0;
               n=n/10;
          }
     return 1;
}

int b(int n)
{
     int a=0;
     while(n>0)
          {
               a+=n%10;
               n=n/10;
          }
     if(a%10==0) return 1;
          return 0;
}
int c(int n)
{
     int a=0,b=n;
     while(n>0)
          {
               a=a*10+n%10;
               n=n/10;
          }
     if(a==b) return 1;
          return 0;
}

main()
{
     int t,m,n,k,d1=0,d2=0,d3=0;
     scanf("%d",&t);
     for(int i=1;i<=t;i++)
          {
               scanf("%d %d %d",&n,&m,&k);
               for(int i=100000;i<=999999;i++)
                    {
                         if(b(i)&&a(i)&&c(i)) d1++;
                         if(b(i)&&c(i)) d2++;
                         if(c(i)) d3++;
                    }
               if(n<=d1&&m<=d2-n&&k<=d3-m-n)
                    printf("YESn");
               else
                    printf("NOn");
          }
}

 

 Bản quyền: https://kienthuc24h.com

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *