2013编程之美-测试赛

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 题目列表 > A + B时间限制: 1000ms 内存限制: 1024MB描述输入两个正整数A和B, 求A+B的值输入两个正整数A, B输出A+B的和对于小数据, 0 < A, B <= 10; 对于大数据, 0 < A, B <= 10100样例输入 2 3样例输出 5#include<iostream>
 
题目列表 > A + B
时间限制: 1000ms 内存限制: 1024MB
描述
输入两个正整数A和B, 求A+B的值
输入
两个正整数A, B
输出
A+B的和
对于小数据, 0 < A, B <= 10; 对于大数据, 0 < A, B <= 10100
样例输入
    2 3
样例输出
    5
#include<iostream>  
#include<cstring>  
using namespace std;  
int* strtoint(char *str)  
{  
    int i,len=strlen(str);  
    int* a=new int[(len+1)*sizeof(int)];  
    for(i=0;i<len;i++)  
        a[i]=(int)str[len-i-1]-48;  
    return a;  
}  
char* inttostr(int* a,int n)  
{  
    int i;  
    char* str=new char[(n+1)*sizeof(char)];  
    for(i=0;i<n;i++)  
        str[i]=(char)a[n-i-1]+48;  
    str[n]='\0';  
    return str;  
}  
int check(int* a,int n)  
{  
    int k=0,len=n;  
    while(a[len-1]==0&&len>1)  
        len--;  
    for(k=0;k<len;k++)  
    if(a[k]>=10)  
    {  
       a[k+1]=a[k+1]+a[k]/10;  
       a[k]=a[k]%10;  
    }  
    if(a[k]!=0)  
        len=k+1;  
    return len;  
}  
char* addition(char* m1,char* m2)  
{  
  int i,len1,len2,len,c=0;  
  int* t1,*t2;  
  len1=strlen(m1);  
  len2=strlen(m2);  
  len=(len1>=len2)?len1:len2;  
  t1=new int[(len+2)*sizeof(int)];  
  t2=new int[(len+2)*sizeof(int)];  
  t1=strtoint(m1);  
  t2=strtoint(m2);  
  for(i=len1;i<len+1;i++)  
    t1[i]=0;  
  for(i=len2;i<len+1;i++)  
    t2[i]=0;  
  for(i=0;i<len;i++)  
    t1[i]+=t2[i];  
    len=check(t1,len);  
    return inttostr(t1,len);  
}  
int main()  
{  
    char m1[1000],m2[1000];  
    while(cin>>m1>>m2)  
    cout<<addition(m1,m2)<<endl;  
    return 0;  
} 
题目列表 > 石头剪刀布
时间限制: 1000ms 内存限制: 1024MB
描述
石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。
一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期的。请问,小A和小B比了N轮之后,谁赢了?
输入
输入的第一行包含一个整数K,表示K组测试数据。
之后的每组测试数据包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。其中,0表示“石头”,2表示“剪刀”,5表示“布”。
对于小数据,0 < K,N,NA,NB <= 10;对于大数据,0 < K,N,NA,NB <= 100;
输出
对于每组测试数据,输出一行。如果小A赢了,输出A;如果小B赢了,输出B;如果两人打平,输出draw。
提示
对于第一组测试数据,猜拳过程为:
A:0 2 5 0 2 5 0 2 5 0
B:0 5 0 2 0 5 0 2 0 5
所以A赢了4轮,B赢了2轮,双方打平4轮,所以A赢了。
对于第二组测试数据,猜拳过程为:
A:2 0 5 2 0
B:0 2 5 0 2
所以A赢了2轮,B赢了2轮,双方打平1轮,所以最终打平了。
样例输入
    2
    10 3 4
    0 2 5
    0 5 0 2
    5 3 3
    2 0 5
    0 2 5
样例输出
    A
    draw

#include<stdio.h>
int a[101],b[101];
int main()
{
	int n,t,na,nb,i,ansa,ansb;
	scanf("%d",&t);
	while(t--)
	{
		ansa=ansb=0;
	   scanf("%d %d %d",&n,&na,&nb);
	   for(i=0;i<na;i++)
		   scanf("%d",&a[i]);
	   int j=i;
	   while(j<n)
		{
	      for(i=0;i<na;i++)
			  a[j++]=a[i];
	    }
	   for(i=0;i<nb;i++)
		   scanf("%d",&b[i]);
	      j=i;
	   while(j<n)
		{
	      for(i=0;i<nb;i++)
			  b[j++]=b[i];
	    }
	   for(i=0;i<n;i++)
		{
	      if(a[i]==b[i])
			  continue;
		   else if(a[i]==0)
			{
		      if(b[i]==2)
                 ansa++;
			  else if(b[i]==5)
                  ansb++;
		    }
            else if(a[i]==2)
			{
		      if(b[i]==0)
                 ansb++;
			  else if(b[i]==5)
                  ansa++;
		    }
			 else if(a[i]==5)
			{
		      if(b[i]==2)
                 ansb++;
			  else if(b[i]==0)
                  ansa++;
		    }
	    }
		if(ansa>ansb)
			printf("A\n");
		else if(ansa<ansb)
			printf("B\n");
		else if(ansa==ansb)
			printf("draw\n");
	}
    return 0;
}
/*题目列表 > 踩方格
时间限制: 1000ms 内存限制: 1024MB
描述
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:
a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
b. 走过的格子立即塌陷无法再走第二次;
c. 只能向北、东、西三个方向走;
请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。
输入
允许在方格上行走的步数n
输出
计算出的方案数量
对于小数据1 <= n <= 20; 对于大数据1 <= n <= 100.
样例输入
    2
样例输出
    7
*/
#include <stdio.h>
#include <string.h>
#define N 105
char c[N],tem[N];
char res[N][N];
void Add(char* a,char* b)
{
    int la,lb,len,i,r,res,j;
    la = strlen(a);
    lb = strlen(b);
    len = la>lb?la:lb;
    r = 0;
    for (i=0; i<len; i++)
    {
        if (i >= la)
            res = b[lb-i-1]+r-'0';
        else if (i >= lb)
            res = a[la-i-1]+ r-'0';
        else
            res = a[la-i-1]+ b[lb-i-1]+ r-2*'0';
        r = res / 10;
        tem[i] = res %10+'0';
    }
    if (r > 0)
        tem[i++] = r%10+'0';
    for (j = 0; j < i; j++)
        c[j] = tem[i-j-1];
    c[j] = 0;
}
int main()
{
    // freopen("in.txt","r",stdin);
    // freopen("out.txt","w",stdout);
    int n;
    strcpy(res[0],"1");
    strcpy(res[1],"3");
    for (int i = 2; i <= 100; i++)
    {
        Add(res[i-1],res[i-1]);
        strcpy(res[i],c);
        Add(res[i],res[i-2]);
        strcpy(res[i],c);
    }
    while(scanf("%d",&n)!=EOF)
        printf("%s\n",res[n]);
    return 0;
}
 



相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
23天前
|
人工智能 自然语言处理 前端开发
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
CodeArena 是一个在线平台,用于测试和比较不同大型语言模型(LLM)的编程能力。通过实时显示多个 LLM 的代码生成过程和结果,帮助开发者选择适合的 LLM,并推动 LLM 技术的发展。
50 7
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
|
2月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
41 1
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
60 2
|
3月前
|
安全 网络安全 数据安全/隐私保护
Python渗透测试之流量分析:流量嗅探工具编程
Python渗透测试之流量分析:流量嗅探工具编程
64 0
|
5月前
|
IDE Java 测试技术
揭秘Java高效编程:测试与调试实战策略,让你代码质量飞跃,职场竞争力飙升!
【8月更文挑战第30天】在软件开发中,测试与调试对确保代码质量至关重要。本文通过对比单元测试、集成测试、调试技巧及静态代码分析,探讨了多种实用的Java测试与调试策略。JUnit和Mockito分别用于单元测试与集成测试,有助于提前发现错误并提高代码可维护性;Eclipse和IntelliJ IDEA内置调试器则能快速定位问题;Checkstyle和PMD等工具则通过静态代码分析发现潜在问题。综合运用这些策略,可显著提升代码质量,为项目成功打下坚实基础。
71 2
|
5月前
|
存储 测试技术 数据库
Python接口自动化测试框架(练习篇)-- 函数编程(一)
本文通过实际的编程练习,讲解了面向过程编程的概念和应用,包括如何定义函数、处理文件读写以及实现用户注册功能,最终将这些过程封装成函数,体现了Python作为脚本语言的面向过程编程特性。
40 2
|
5月前
|
测试技术 Python
Python接口自动化测试框架(练习篇)-- 函数编程(二)
本文通过具体的编程练习,深入探讨了Python中的函数编程,包括如何定义函数、使用参数和返回值,以及函数式编程的技巧和应用,如使用lambda表达式和递归函数解决实际问题。
36 1
|
6月前
|
Java 数据库 Spring
Java编程问题之在测试中使用CGLIB创建代理类如何解决
Java编程问题之在测试中使用CGLIB创建代理类如何解决
|
7月前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
|
8月前
|
设计模式 并行计算 算法
代码之韵:高效编程的艺术深入理解软件自动化测试框架的设计与实现
【5月更文挑战第29天】在数字世界的构建中,编程不仅仅是一门科学,更是一种艺术。本文将探讨如何通过理解编程的本质、掌握设计模式、运用算法智慧以及持续的性能优化过程,来提升编程效率和代码质量。我们将从宏观的架构设计到微观的代码细节,剖析那些让代码更加优雅、高效且易于维护的技巧与实践。