沉迷刷水无法自拔。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 5005000 using namespace std; int t,a,b; bool vis[maxn]; int main() { scanf("%d%d%d",&t,&a,&b); vis[0]=true; for (int i=1;i<=t;i++) { if (i>=a) vis[i]|=vis[i-a]; if (i>=b) vis[i]|=vis[i-b]; } for (int i=1;i<=t;i++) vis[i/2]|=vis[i]; for (int i=1;i<=t;i++) { if (i>=a) vis[i]|=vis[i-a]; if (i>=b) vis[i]|=vis[i-b]; } for (int i=t;i>=0;i--) if (vis[i]) {printf("%d\n",i);return 0;} }