二师弟的星际加法 | |
描述: |
说明: 1:数字的字符串其中包括0-9和a-z(表示10-35)。 2:所有的输入和输出都只会是小写字母或数字,不存在其他字符。
|
运行时间限制: | 无限制 |
内存限制: | 无限制 |
输入: | 整形数:计算进制 字符串:计算数1 字符串:计算数2 |
输出: | 字符串:计算结果 |
样例输入: | 10
100
100 |
样例输出: | 200 |
答案提示: |
|
---------JAVA 通过了
import java.math.BigInteger;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = newScanner(System.in);
int N = cin.nextInt();
if (N > 35 || N < 2)
System.out.println("-1");
else {
try {
BigIntegera = cin.nextBigInteger(N);
BigIntegerb = cin.nextBigInteger(N);
BigInteger c = a.add(b);
System.out.println(c.toString(N));
}
catch(InputMismatchException e) {
System.out.println("-1");
}
}
}
}
------------C语言没调出
#include <STDIO.H>
#include<STRING.H>
#define M 100
char char_int(int a);
intmain()
{
int N;
char A[M];
char B[M];
char C[M];
int a[M],length_a;
int b[M],length_b;
int c[M],length_c;
int i;
/*输入*/
printf("please Enter the number of Decimal:\n");
scanf("%d",&N);
fflush(stdin);
printf("please Enter The string1:\n");
gets(A);
fflush(stdin);
length_a=strlen(A);
printf("please Enter The string2:\n");
gets(B);
length_b=strlen(B);
fflush(stdin);
/*处理*/
/*将A中的字符都变成相对应的数字*/
for(i=0;i<length_a;i++)
{
a[i]=(int)(A[length_a-1-i]);
if(a[i]>=48&&a[i]<=57)
a[i]=a[i]-48;
else
a[i]=a[i]-87;
if(a[i]>=N)
return printf("-1\n");
}
/*将B中的字符都变成相对应的数字*/
for(i=0;i<length_b;i++)
{
b[i]=(int)B[length_b-1-i];
if(b[i]>=48&&b[i]<=57)
b[i]=b[i]-48;
else
b[i]=b[i]-87;
if(b[i]>=N)
return printf("-1\n");
}
/*将A与B相加后所得的结果放在C中*/
if(length_a>=length_b)
{
for(i=length_b;i<length_a;i++)
b[i]=0;
for(i=0;i<length_a+1;i++)
c[i]=0;
for(i=0;i<length_a;i++)
{
c[i]=a[i]+b[i]+c[i];
if(c[i]>=N)
{
c[i+1]=1;
c[i]=c[i]-N;
}
}
if(c[length_a]==0)
length_c=length_a;
else
length_c=length_a+1;
}
else
{
for(i=length_a;i<length_b;i++)
a[i]=0;
for(i=0;i<length_b+1;i++)
c[i]=0;
for(i=0;i<length_b;i++)
{
c[i]=a[i]+b[i]+c[i];
if(c[i]>=N)
{
c[i+1]=1;
c[i]=c[i]-N;
}
}
if(c[length_b]==0)
length_c=length_b;
else
length_c=length_b+1;
}
for(i=0;i<length_c;i++)
C[i]=char_int(c[length_c-1-i]);
for(i=0;i<length_c;i++)
printf("%c ",C[i]);
printf("\n");
return 0;
}
/******************************************************
将char型的字符转成相对应的10进制数字
******************************************************/
char char_int(int a)
{
char b;
if(a>=0&&a<=9)
b=(char)(a+48);
else
b=(char)(a+87);
return b;
}
赛况统计 | ||||||||||||||||||||||||||||
描述: | 有一个游戏平台,各个参赛队伍(以唯一的TeamID来标识)之间进行单循环的对抗赛,两个队伍之间只举行一场比赛,比赛以得分的多少定胜负。需要完成一个统计赛况的程序,能够随时查询指定队伍的最新赛况:包括胜、平、负的局数,当前总积分以及名次。 队伍1:积4分 循环赛的前两场比赛结果如下:
查询队伍2的当前赛况,结果为:
规格: 输入满足如下规格或约束,考生程序无需检查: | |||||||||||||||||||||||||||
运行时间限制: | 无限制 | |||||||||||||||||||||||||||
内存限制: | 无限制 | |||||||||||||||||||||||||||
输入: | 三种命令,每条命令一行,格式分别为: 1、增加比赛结果 AddGameResult Team1Id Team1Score Team2Id Team2Score 其中Team1Id Team1Score Team2Id Team2Score为正整数
2、查询队伍的最新赛况 GetTeamResult TeamId 其中Team1Id为正整数 收到该命令,输出该队伍的比赛赛况。
3、清除所有比赛队伍及其赛况信息 Clear 该命令没有参数
其他命令系统忽略。 | |||||||||||||||||||||||||||
输出: | 仅当GetTeamResult命令输出信息,格式为:队伍ID 胜的场数 平局场数 负的场数 总积分 名次,一个空格隔开 如果查询的队伍ID没有比赛信息,输出:队伍ID -1 | |||||||||||||||||||||||||||
样例输入: | AddGameResult 1 34 2 45 AddGameResult 2 40 3 40 GetTeamResult 2 | |||||||||||||||||||||||||||
样例输出: | 2 1 1 0 4 1 | |||||||||||||||||||||||||||
答案提示: |
|
---------------------没有调试出
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define N 65535
int Team1Id, Team2Id;
int Team1Score, Team2Score;
struct Team{
int TeamID;
int win[N];
int equal[N];
int lose[N];
int Score[N];
int Order[N];
}Team;
int main(void)
{
int i,j;
intTeamMax, GetId, Order[N]={0};
int order;
i = N;
while(i--)
{
Team.equal[i] = 0;
Team.lose[i] = 0;
Team.Score[i] = 0;
Team.win[i] = 0;
Team.Order[i] = i;
}
for(i=0; i<2; i++)
{
printf("AddGeamResult");
scanf("%d %d %d%d", &Team1Id, &Team1Score, &Team2Id, &Team2Score);
Team.Score[Team1Id] +=Team1Score;
Team.Score[Team2Id] +=Team2Score;
if(Team.Score[Team1Id] > Team.Score[Team2Id])
{
Team.lose[Team2Id]++;
Team.win[Team1Id]++;
}
else if(Team.Score[Team1Id]== Team.Score[Team2Id])
{
Team.equal[Team1Id]++;
Team.equal[Team2Id]++;
}
else
{
Team.lose[Team1Id]++;
Team.win[Team2Id]++;
}
TeamMax = (Team1Id >Team2Id) ? Team1Id : Team2Id;
}
for(i=0; i<=TeamMax; i++)
{
Order[i] = Team.Score[i];
}
for(i=0; i<=TeamMax; i++) //排序
for(j=0; j<= TeamMax-i;j++)
{
if(Order[i] <Order[j])
{
order =Order[i];
Order[i] =Order[j];
Order[j] =Order[i];
}
}
for(i=0; i<=TeamMax; i++) //定Order[], 不含同分的排名
{
for(j=0; j<=TeamMax;j++)
{
if(Order[i] ==Team.Score[j])
Team.Order[j]= i;
}
}
printf("GetTeamResult");
scanf("%d", &GetId);
if (GetId > TeamMax)
printf("%d -1",GetId);
else
printf("%d %d %d %d %d%d\n", GetId, Team.win[GetId], Team.equal[GetId], Team.lose[GetId],Team.Score[GetId], Team.Order[GetId]);
return 0;
}