数字方格
题目描述 :
__________________________
| | | |
| a1 | a2 | a3 |
| | | |
——————————————--
如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3。 已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3 的倍数, a1 + a2 + a3是5的倍数。你的任务是找到一组a1,a2, a3,使得a1 + a2 + a3最大。 输入 一行,包含一个整数n (0 <= n <= 100)。 输出 一个整数,即a1 + a2 + a3的最大值。
样例输入
3
样例输出
5
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int ma=-1;
for(int a1=0;a1<=n;a1++)
{
for(int a2=0;a2<=n;a2++)
{
for(int a3=0;a3<=n;a3++)
{
if((a1+a2)%2==0&&(a2+a3)%3==0&&(a1+a2+a3)%5==0)
{
ma=max(ma,a1+a2+a3);
}
}
}
}
cout<<ma;
return 0;
}
鸡兔同笼
题目描述: 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面,注意!至少有多少只动物!,!至多有多少只动物!注意。 输入 一行,一个正整数a (a < 32768)。 输出 一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。 如果没有满足要求的答案,则输出两个0,中间用一个空格分开。
样例输入
20
样例输出
5 10
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int mi=99999;
int ma=-1;
bool f=true;
for(int i=0;i<=n;i++)
{
int j=(n-i*2)/4;
if(j>=0&&i*2+j*4==n)
{
f=false;
mi=min(mi,i+j);
ma=max(ma,i+j);
}
}
if(f==true)
{
cout<<0<<" "<<0;
}
else
{
cout<<mi<<" "<<ma;
}
return 0;
}
两倍
题目描述: 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一 个数的两倍。比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9 的两倍。 输入 一行,给出2到15个两两不同且小于100的正整数。最后用0表示输入结束。 输出 一个整数,即有多少个数对满足其中一个数是另一个数的两倍。
注意!这次没有限制输入的个数,而是用 0 结尾,千万不要写错!
样例输入
1 4 3 2 9 7 18 22 0
样例输出
3
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[110];
int n=0;
for(int i=0;i<15;i++)
{
int tmp;
cin>>tmp;
if(tmp!=0)a[n]=tmp;
else break;
n++;
}
int cnt=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(a[i]==a[j]*2)
{
cnt++;
}
}
}
cout<<cnt;
return 0;
}
完美立方
题目描述: 形如a^3= b^3 + c^3 + d^3的等式被称为完美立 方等式。例如123= 6^3 + 8^3 + 10^3 。编写一 个程序,对任给的正整数N (N≤100),寻找所有 的四元组(a, b, c, d),使得a^3 = b^3 + c^3 + d^3, 其中a,b,c,d 大于 1, 小于等于N,且b<=c<=d。 输入 一个正整数N (N≤100)。 输出 每行输出一个完美立方。输出格式为:
Cube = a, Triple = (b,c,d)
其中a,b,c,d所在位置分别用实际求出四元组值代入。 请按照a的值,从小到大依次输出。当两个完美立 方等式中a的值相同,则b值小的优先输出、仍相 同则c值小的优先输出、再相同则d值小的先输出。
样例输入
24
样例输出
Cube = 6, Triple = (3,4,5)
Cube = (9) Triple = (1,6,8)
Cube = 12, Triple = (6,8,10)
Cube = 18, Triple = (2,12,16)
Cube = 18, Triple = (9,12,15)
Cube = 19, Triple = (3,10,18)
Cube = 20, Triple = (7,14,17)
Cube = 24, Triple = (12,16,20)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int a=1;a<=n;a++)
{
for(int b=1;b<=n;b++)
{
for(int c=b;c<=n;c++)
{
for(int d=c;d<=n;d++)
{
if(a*a*a==b*b*b+c*c*c+d*d*d)
{
printf("Cube = (%d) Triple = (%d,%d,%d)\n",a,b,c,d);
}
}
}
}
}
return 0;
}
和数
给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列 1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 输入 共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个不大于10000的正整数 组成的数列,相邻两个整数之间用单个空格隔开。 输出 一个整数,即数列中等于其他两个数之和的数的个数。
样例输入
4
1 2 3 4
样例输出
2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[110];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int cnt=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=1;k<n;k++)
{
if(a[k]!=a[j]&&a[k]!=a[i]&&a[j]!=a[i]&&a[j]+a[k]==a[i])
{
cnt++;
}
}
}
}
cout<<cnt;
return 0;
}
因子问题
题目描述: 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 输入 包括两个整数N、M。N不超过1,000,000。 输出 输出一个整数a,表示结果。如果某个案例中满足条件的正整数不存在,则在对应行输出-1
样例输入
35 10
样例输出
5
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
for(int a=2;a<m-2;a++)
{
if(n%a==0&&n%(m-a)==0)
{
cout<<a;
return 0;
}
}
cout<<-1;
return 0;
}