Lanqiao CupZhentiで購入できない番号
数論
リソース制限
時間制限:1.0秒メモリ制限:256.0MB
問題の説明
XiaoMingはキャンディーストアをオープンしました。彼は独創的です:フルーツキャンディーを4個と7個の2つのパックに詰めます。キャンディーは開梱して販売することはできません。
子供がお菓子を買いに来るとき、彼はこれらの2種類のパッケージを組み合わせて使用します。もちろん、10個のキャンディーのように、キャンディーの数を組み合わせることはできません。
コンピューターでテストできます。このパッケージの場合、利用できない最大数量は17です。17より大きい任意の数は、4および7と組み合わせることができます。
この質問の要件は、2つのパッケージの数量がわかっている場合に組み合わせることができない最大数を見つけることです。
入力フォーマット
各パッケージの砂糖の数を示す2つの正の整数(1000以下)
出力フォーマット
購入できない砂糖の最大量を示す正の整数
サンプル入力1
4 7
サンプル出力1
17
サンプル入力2
3 5
サンプル出力2
7
(66%)コード1:
#include<stdio.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int min;
int max;
if(m>n){
min=n;
max=m;
}else{
min=m;
max=n;
}
int ans=max-1;
int arr[99999]={
0};//足够大的数组先全部赋值为0;
for(int r=1;r<=m*n-max+1;r++){
//r用来控制问题的规模,从1开始
for(int x=0;x<=r;x++){
arr[m*x+n*(r-x)]=1;
}
}
for(int xx=max+1;xx<=m*n;xx++){
//xx用于控制m糖的数量,进而n糖数量为r-x;
if(arr[xx]==0){
ans=xx;
}
}
printf("%d",ans);
return 0;
}
アイデア1:表現できない最大数はm * n以下でなければならないと思った;
(100%)code2:
#include<stdio.h>
using namespace std;
int main()
{
int m,n;
scanf("%d %d",&m,&n);
printf("%d",(m*n-m-n));
return 0;
}
**思考2:チェックした後、2つの素数m、nはm x + n yとして表すことはできません(x、yは自然数です)**最大数は次のとおりです:
(m * nmn) ;数論知識、蓄積、 道はない。