ACM试题

2019-08-30 15:16

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 \#include \

void main() {

int n;

int s[10][2]; bool r[10]; char ch;

cout<<\请输入次数:\ cin>>n;

for (int i=0;i

cout<<\请输入第\次的猪圈个数和剩下的猪:(用--分开)\ 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

r[i]=(sum%s[i][0]==s[i][1]); for (i=0;i

if (r[i]==0) break; }

if (i==n) break; }

cout<<\猪至少有\只。\ }

蛇行矩阵

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(\ if(n <= 0) return 0;

printf(\形成的蛇形矩阵为:\\n\

a[0][0] = 1;//因为每次第一个数必是1 printf(\ for(int i=0;i

a[i+1][0] = a[i][0] + i + 1;//提前算出下一行的第一个数据 for(int j=0;j

a[i][j+1] = a[i][j] + j + i + 2;//算出每一行的每个数据 printf(\打印每一行的数据 }

printf(\打印下一行的第一个数据 }

printf(\ return 0; }

平方数

给出包含M个数字的列表,和列表中所有数字的所有质因数。求出最长的子列表,使得子列表中所有数字的乘积是一个完全平方数。

输入

输入文件包含多组测试数据。第一行包含两个整数N , M ( 1 <= N <= 30 , 1 <= M <= 30000 ). N 是质因数的个数。接下来一行有N个整数,给出所有的质因数。然后一行包含M个整数,给出列表。

输入文件结束于N = M = 0. 输出

对于每组数据,输出最长子列表的两个位置坐标l r。l是该子列表在列表中的起始位置,r是结束位置。如果多种情况都满足子列表长度最大,输出l最小的一个。如果不存在这样的子列表输出“None”。 样例输入 3 4 2 3 5 4 9 25 6 3 4 2 3 5 6 6 3 3 0 0 样例输出 1 3 1 4

答案:

#include

using namespace std;

#define MAX_N 30

#define MAX_M 30000

void squareNumber(int *A,int *B,int N,int M);

void main() {

int A[MAX_N]; int B[MAX_M];

int N,M;

cin>>N>>M; int i;

while (N!=0||M!=0) {

for (i=0;i

cin>>A[i]; }

for (i=0;i

cin>>B[i]; }

squareNumber(A,B,N,M);

cin>>N>>M; } }

void squareNumber(int *A,int *B,int N,int M) {

int i,j,k,t; bool flag;

int num[MAX_N]={0}; int temp=1;

int len_max=0; int r=0; int f=0;

for (i=0;i

for (j=i+1+len_max;j<=M;j++) {

for (k=0;k

num[k]=0; }

for (k=i;k

temp=B[k];

while (temp!=1) {

flag=false;

for (t=0;t

if (temp%A[t]==0) {

temp/=A[t]; num[t]++; flag=true; } }

if (!flag)


ACM试题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:黑白照片冲洗放大报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: