#1000 A+B problem
#include <stdio.h>
//测试通不过,不知道为什么按理说是可以的。
int main()
{
/* Write C code in this online editor and run it. */
int a;
while(scanf("%d",&a)==1)
{
if(a<=0) break;
printf("%llu\n",a*(a+1)/2);
printf("\n");
}
return 0;
}
#1001 Sum problem
没通过的代码,可能同样答案的太多了? O(1)
#include <stdio.h>
//测试通不过,不知道为什么按理说是可以的。
int main()
{
/* Write C code in this online editor and run it. */
int a;
while(scanf("%d",&a)==1)
{
if(a<=0) break;
printf("%llu\n",a*(a+1)/2);
printf("\n");
}
return 0;
}
AC代码
#include <stdio.h>
int main()
{
/* Write C code in this online editor and run it. */
int a,sum;
while(scanf("%d",&a)==1)
{
if(a<=0) break;
sum = 0;
for (int i=1; i<=a;i++)
{
sum += i;
}
printf("%d\n",sum);
}
return 0;
}
#1002 A+B problem(Ⅱ)
错误答案
//错误答案,因为1000位直接是存不下的,因此不管怎么样都通过不了,只能用字符串去存储
#include <stdio.h>
int main()
{
int T;
unsigned long long a, b ,sum;
scanf("%d", &T) == 1;
getchar();
if(T >= 1 && T <= 20)
{
for(int i = 1; i <= T; i++)
{
if(scanf("%llu%llu", &a, &b) == 2 && length(a)<1000 && length(b)<1000)
{
printf("Case %d:\n", i);
sum = a + b;
printf("%llu + %llu = %llu\n\n",a, b, sum);
}
}
}
else return -1;
return 0;
}
正确答案
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
int T;
char m[MAX_LEN+1],n[MAX_LEN+1];
int cnt=1;
int a[MAX_LEN+1],b[MAX_LEN+1],c[MAX_LEN+1];
int mark;
int len,len1,len2;
int max;
scanf("%d",&T) == 1;
if(T>=1 && T<=20)
{
while(T--)
{
//初始化数组元素为零
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
//初始化标志位
mark = 0;
//读入字符数组
scanf("%s%s",&m,&n)==2;
//保存字符型数字的长度
len1=strlen(m),len2=strlen(n);
max=(len1>len2)?len1:len2;
//将字符转换为integer型数字并存入数组
for(int i=0;i<len1;i++)
a[i]=m[len1-i-1]-'0';
for(int j=0;j<len2;j++)
b[j]=n[len2-j-1]-'0';
// 123 + 987
// a: 3 2 1
// b: 7 8 9
// c: 0 1 1 1
for( len=0;len<max;len++){
if(a[len]+b[len]+c[len]>=10){
c[len]+=a[len]+b[len]-10;
c[len+1]++;
}
else
c[len]+=a[len]+b[len];
}
if(c[len]>0) //进位标志
{
mark = 1;
}
printf("Case %d:\n",cnt);
for(int i=len1-1;i>=0;i--)
printf("%d",a[i]);
printf(" + ");
for(int i=len2-1;i>=0;i--)
printf("%d",b[i]);
printf(" = ");
for(int x=max-1+mark;x>=0;x--)
printf("%d",c[x]);
printf("\n\n");
cnt++;
}
}
else
return -1;
return 0;
}
//还是有bug 0009 + 09888 = 09897
#2000 ASCII码排序
#include <stdio.h>
int main()
{
/* Write C code in this online editor and run it. */
char a[3]={0};
char temp;
while(scanf("%c%c%c",&a[0],&a[1],&a[2])!= EOF)
{
getchar();
//冒泡排序
for(int i = 0; i< 3; i++)
{
int flag = 0;
for(int j = 0;j<2-i;j++)
{
if (a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = 1;
}
}
if (!flag) break; // 没有数据交换,提前退出
}
for (int i = 0; i< 3; i++)
{
printf("%c ",a[i]);
}
printf("\n");
}
return 0;
}
也可以手动比较,不用冒泡
#include <stdio.h>
int main()
{
/* Write C code in this online editor and run it. */
char a[3]={0};
char temp;
while(scanf("%c%c%c",&a[0],&a[1],&a[2])!= EOF)
{
getchar(); //消除空格非常关键
//手动比较 12 13 23
if(a[0]>a[1])
{
temp = a[0];
a[0] = a[1];
a[1] = temp;
}
if(a[1]>a[2])
{
temp = a[1];
a[1] = a[2];
a[2] = temp;
}
if(a[0]>a[2])
{
temp = a[0];
a[0] = a[2];
a[2] = temp;
}
for (int i = 0; i< 3; i++)
{
printf("%c ",a[i]);
}
printf("\n");
}
return 0;
}
#2001 计算两点之间的距离
#include <stdio.h>
#include <math.h>
int main()
{
double a[4] ={0};
double dis = 0;
while(scanf("%lf%lf%lf%lf",a,a+1,a+2,a+3)==4)
{
getchar();
dis = sqrt(pow((a[0]-a[2]),2)+pow((a[1]-a[3]),2));
printf("%.2lf\n",dis);
}
return 0;
}
#2002 计算球体积
#include <stdio.h>
#define PI 3.1415927
int main()
{
double r;
double v;
while(scanf("%lf",&r)==1)
{
v = 4 * PI * r * r * r / 3;
printf("%.3lf\n",v);
}
return 0;
}
#2003 求绝对值
#include <stdio.h>
double abb(double x)
{
return (x>=0?x:-x);
}
int main()
{
double a;
while(scanf("%lf",&a)==1)
{
printf("%.2lf\n",abb(a));
}
return 0;
}
//很奇怪 其他方法会触发组网策略
#2004 成绩转换
//其他方法会超时,这个快。
#include <stdio.h>
int main(void)
{
int score;
char convert[] = "EEEEEEDCBAA";
while(scanf("%d", &score) != EOF) {
if(score < 0 || score > 100)
printf("Score is error!\n");
else
printf("%c\n", convert[score/10]);
}
return 0;
}
#2005 第几天?
#
#include<stdio.h>
int mdays[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(void)
{
int y, m, d;
int days,i;
while(scanf("%d/%d/%d", &y, &m, &d) ==3)
{
days = 0;
if(y % 400 == 0 || ((y % 4 ==0) && (y % 100 != 0)))
mdays[2] = 29;
else
mdays[2] = 28;
for(i = 1; i < m; i++)
days += mdays[i];
days += d;
printf("%d\n", days);
}
return 0;
}
#2006 求奇数的乘积
#include<stdio.h>
int main(void)
{
int n;
int m;
while(scanf("%d",&n)==1)
{
int sum = 1;
while(n--)
{
scanf("%d",&m)==1;
if(m%2 == 1)
{
sum *= m;
}
}
printf("%d\n",sum);
}
return 0;
}
#2007 平方和与立方和
#include<stdio.h>
int main(void)
{
int start;
int end;
int ou_sum;
int ji_sum;
while(scanf("%d%d",&start,&end)!= EOF)
{
ou_sum = 0;
ji_sum = 0;
//这里有坑 需要排序
if(start>end){
int tmp = start;
start=end;
end=tmp;
}
for(int i = start; i<= end ;++i)
{
if(i%2 == 1)
{
ji_sum += i*i*i;
}
else
{
ou_sum += i*i;
}
}
printf("%d %d\n",ou_sum,ji_sum);
}
return 0;
}
#2008 数值统计
#include<stdio.h>
int main(void)
{
int n;
double m;
int num_pos,num_zero,num_neg;
while(scanf("%d",&n)==1)
{
if(n>=100 || n<=0) break;
num_pos = 0;
num_zero = 0;
num_neg = 0;
while(n--)
{
scanf("%lf",&m)==1;
if(m>0)
{
num_pos++;
}
else if(m==0)
{
num_zero ++;
}
else
{
num_neg ++;
}
}
printf("%d %d %d\n",num_neg,num_zero,num_pos);
}
return 0;
}
#2009 求数列的和
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n;
double sum = 0;
double temp = 0;
while(scanf("%d%d",&n,&m)==2)
{
sum = n;
temp = n;
if(m>=1000 || m<0 || n>=10000 || n<0) break;
for(int i = 1; i<m;i++)
{
temp = sqrt(temp);
sum += temp;
}
printf("%.2lf\n",sum);
}
return 0;
}
#2010 水仙花数
#include<stdio.h>
int main(void)
{
int m,n;
int a,b,c;
int cnt;
while(scanf("%d%d",&m,&n)==2)
{
if(m>=100 && m <= n && n<=999)
{
cnt = 0;
for(int i = m;i <= n; i++)
{
a = i/100;
b = (i/10)%10;
c = i%10;
if( i == a*a*a + b*b*b + c*c*c)
{
printf("%d ",i);
cnt ++;
}
}
if(!cnt) printf("no\n");
else printf("\n");
}
else break;
}
return 0;
}
#2011 多项式求和
#include<stdio.h>
#include<math.h>
int main(void)
{
int m;
int n;
double sum;
scanf("%d",&m) == 1;
if(m<100 && m>0)
{
while(m--)
{
scanf("%d",&n)==1;
if(n<1000 && n>0)
{
sum = 0;
for(int i = 1 ; i<=n ; i++)
{
sum -= pow(-1,i)/i;
}
printf("%.2lf\n",sum);
}
else break;
}
}
else return -1;
return 0;
}
#2012 素数判定
#include<stdio.h>
#include<math.h>
int is_prime(int x)
{
if(x<=1) return 0;
for(int i=2;i<sqrt(x);i++)
{
if(x%i == 0)
{
return 0; //不是素数
}
}
return 1; //是素数
}
int main(void)
{
int mark = 0;
int x, y;
int result;
while(scanf("%d%d",&x, &y)==2)
{
mark = 0;
//这里有坑 需要排序
if(x>y){
int tmp = x;
x = y;
y = tmp;
}
if(x==0 && y==0) break;
else if( y<= 50 && x>=-39)
{
for(int i = x; i<= y; i++)
{
result = i*i+i+41;
if(is_prime(result)==0)
{
printf("Sorry\n");
mark = 1; //不全是素数
break;
}
}
if(mark == 0)
{
printf("OK\n");
}
}
else break;
}
return 0;
}