ACM程序设计试题及参考答案
猪的安家
Andy和Mary养了很多猪。他们想要给猪安家。但是Andy没有足够的猪圈,很多猪只能够在一个猪圈安家。举个例子,假如有16头猪,Andy建了3个猪圈,为了保证公平,剩下1头猪就没有地方安家了。Mary生气了,骂Andy没有脑子,并让他重新建立猪圈。这回Andy建造了5个猪圈,但是仍然有1头猪没有地方去,然后Andy又建造了7个猪圈,但是还有2头没有地方去。Andy都快疯了。你对这个事情感兴趣起来,你想通过Andy建造猪圈的过程,知道Andy家至少养了多少头猪。
输入
输入包含多组测试数据。每组数据第一行包含一个整数n (n <= 10) – Andy建立猪圈的次数,解下来n行,每行两个整数ai, bi( bi <= ai <= 1000), 表示Andy建立了ai个猪圈,有bi头猪没有去处。你可以假定(ai, aj) = 1.
输出
输出包含一个正整数,即为Andy家至少养猪的数目。
样例输入
3
3 1
5 1
7 2
样例输出
16
答案:
// 猪的安家.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream.h"
void main()
{
int n;
int s[10][2];
bool r[10];
char ch;
cout<<"请输入次数:"<<endl; 什么是编程举个例子
cin>>n;
for (int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"次的猪圈个数和剩下的猪:,用--分开,"<<endl;
cin>>s[i][0]>>ch>>ch>>s[i][1];
}
for (i=0;i<10;i++)
r[i]=true;
for (int sum=1;;sum++)
{
for (i=0;i<n;i++)
r[i]=(sum%s[i][0]==s[i][1]);
for (i=0;i<n;i++)
{
if (r[i]==0)
break;
}
if (i==n)
break;
}
cout<<"猪至少有"<<sum<<"只。"<<endl;
}
蛇行矩阵
Problem
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
Input
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
Output
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。
矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
Sample Input
5
Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
答案:
//SNAKE 矩阵
////////////////////////////////////////////////////////////////////////////////
#define M 100
int main()
{
int a[M][M];
int n;
printf("请输入N的值:\n");
scanf("%d",&n);
if(n <= 0)
return 0;
printf("形成的蛇形矩阵为:\n");
a[0][0] = 1;//因为每次第一个数必是1
printf("%d ",a[0][0]);
for(int i=0;i<n-1;i++)
{
a[i+1][0] = a[i][0] + i + 1;//提前算出下一行的第一个数据
for(int j=0;j<n-i-1;j++)
{
a[i][j+1] = a[i][j] + j + i + 2;//算出每一行的每个数据
printf("%d ",a[i][j+1]);//打印每一行的数据
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论