PAT 1048. Find Coins

two sum题目,算是贪婪吧

#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int N, M;
    scanf("%d%d", &N, &M);

    vector<int> coins(N);
    for (int i=0; i<N; i++) {
        scanf("%d", &coins[i]);
    }

    sort(coins.begin(), coins.end());

    int p = 0, q = N - 1;
    while (p<q) {
        int sum = coins[p] + coins[q];
        if (sum > M) {
            // bigger, so decrease it, move q to the smaller coins
            q--;
        } else if (sum < M) {
            // smaller, so increase it, move p to the bigger coins
            p++;
        } else {
            // we found the coins
            printf("%d %d\n", coins[p], coins[q]);
            break;
        }
    }
    if (p >= q) {
        printf("No Solution\n");
    }
    return 0;
}
时间: 2024-10-05 04:13:56

PAT 1048. Find Coins的相关文章

PAT:1048. Find Coins (25)(哈希表法) AC

#include<stdio.h> #include<string.h> int HARSH[1066]; int main() { memset(HARSH,0,sizeof(HARSH)); int n,m; scanf("%d%d",&n,&m); for(int i=0 ; i<n ; ++i) { int tmp; scanf("%d",&tmp); ++HARSH[tmp]; } for(int i=

PAT:1048. Find Coins (25)(双指针法) AC

#include<stdio.h> #include<algorithm> using namespace std; int arr[100066]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0 ; i<n ; ++i) scanf("%d",&arr[i]); sort(arr,arr+n); int l=0,r=n-1; //左右指针 whil

PAT:1048. Find Coins (25)(二分查找) AC

#include<stdio.h> #include<algorithm> using namespace std; int arr[100066]; int FIND(int l,int r,int aim) //二分查找,从l到r,查找aim { int mid; while(l<=r) { mid=(l+r)/2; if(arr[mid]==aim) return mid; //找到:返回坐标 else if(arr[mid]<aim) l=mid+1; else

【PAT甲级】1048 Find Coins (25 分)(二分)

题意: 输入两个正整数N和M(N<=10000,M<=1000),然后输入N个正整数(<=500),输出两个数字和恰好等于M的两个数(小的数字尽可能小且输出在前),如果没有输出"No Solution". 代码: #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int a[100007];int main(){ ios::sync_with_stdio(false

1048. Find Coins (25)

题目例如以下: Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special requirement of the pa

1048. Find Coins

Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special requirement of the payment: f

PAT 1048数字加密

本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10.Q 代表 11.K 代表 12:对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10.这里令个位为第 1 位. 输入格式: 输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔. 输出格式: 在一行中输出加密后的结果. 输入样例: 1234567 3

PAT 1048. 数字加密(20)

本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余--这里用J代表10.Q代表11.K代表12:对偶数位,用B的数字减去A的数字,若结果为负数,则再加10.这里令个位为第1位. 输入格式: 输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔. 输出格式: 在一行中输出加密后的结果. 输入样例: 1234567 368782971 输出样例: 3695Q8118代码写

PAT 1048 数字加密(字符串)

本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10.Q 代表 11.K 代表 12:对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10.这里令个位为第 1 位. 输入格式: 输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔. 输出格式: 在一行中输出加密后的结果. 输入样例: 1234567 3