1、小熊很喜欢只包含'4'、'7'的数,称为幸运数,例如44,47,77,774都是小熊的喜欢的数,而"141871"不是幸运数。
但是幸运数不是常常出现,于是他认为"141871"其实是包含幸运数"47"的,即去掉非'4','7'的数字后,数变成了"47"是幸运数字,称为伪幸运数。
给定数a,以及幸运数b,问第一个满足大于a,且包含幸运数b的数。
输入
输入两个正整数a、b(<100000),分别表示给定数值和幸运数
输出
输出第一个满足大于a,且包含幸运数b的数
样例输入
100 47
样例输出
147
3、给一个数N表示测试用例的个数,然后在给N组a, b,求a+b的值,其中a,b<10^50且a, b>=0;
测试用例之间以空行隔开,且最后一个测试用例之后没有空行。
样例输入:
2
1 2
112233445566778899 998877665544332211
样例输出:
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
1003
1005
1006
1007
1028
////3.给一个数N表示测试用例的个数,然后在给N组a, b,求a+b的值,其中a,b<10^50且a, b>=0;
////测试用例之间以空行隔开,且最后一个测试用例之后没有空行。
////样例输入:
////2
////1 2
////112233445566778899 998877665544332211
////样例输出:
////Case 1:
////1 + 2 = 3
////
////Case 2:
////112233445566778899 + 998877665544332211 = 1111111111111111110
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char a[60];
char b[60];
char c[60];
}ab,*pab;
void reverse(char *str)
{
int len=strlen(str);
int i;
char tmp;
for(i=0;i<len/2;i++)
{
tmp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=tmp;
}
}
void Reverse(pab p,int N)
{
int i,j;
for(i=0;i<N;i++)
{
reverse(p[i].a);
reverse(p[i].b);
reverse(p[i].c);
}
}
void add( char* a, char* b,char *c)
{
int lena=strlen(a);
int lenb=strlen(b);
int i,j,z=0;
int flag=0;
int tmpa,tmpb;
int len=lena>lenb?lena:lenb;
for(i=0;i<len;i++)
{
if((i+1)>strlen(a)) //保证a,b字符串不一样长的时候结果正确,长度从1开始计算
{
tmpa=0;
}
else
{
tmpa=a[i]-48;
}
if((i+1)>strlen(b))
{
tmpb=0;
}
else
{
tmpb=b[i]-48;
}
if(tmpa+tmpb<10)
{
c[z++]=tmpa+tmpb+48+flag;
flag=0;
}
else if(tmpa+tmpb>=10)
{
c[z++]=tmpa+tmpb-10+48+flag;
flag=1;
}
}
if(flag==1)
{
c[z]=1+48;
}
}
|
void Add(pab p,int N)
{
int i,j,z;
int lena,lenb,len;
int flag=0;
for(i=0;i<N;i++)
{
add(p[i].a,p[i].b,p[i].c);
}
}
int main()
{
int N;
int i;
pab p=(pab)calloc(100,sizeof(ab));
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%s %s",p[i].a,p[i].b);
}
Reverse(p,N);
Add(p,N);
Reverse(p,N);
for(i=0;i<N;i++)
{
printf("case %d:\n",i+1);
printf("%s + %s = %s\n",p[i].a,p[i].b,p[i].c);
}
system("pause");
return 0;
}
|