CF Codeforces Round #231 (Div. 2)

http://codeforces.com/contest/394

话说这次CF做的超级不爽,A题一开始交过了,我就没再管,B题还没看完呢,就死困死困的,后来觉得B题枚举一下估计能行,当时是觉得可以从后往前乘,但是细节什么的都没想好,所以干在纸上画也没写出什么来。没想到我A题竟然忘了一种情况,就是+前就一根的时候,郁闷死我了。

A  Counting Sticks

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h> using namespace std ; int main()
{
char sh[] ;
while(~scanf("%s",sh))
{
int len = strlen(sh) ;
int left = ,right = ;
for(int i = ; i < len ; i++)
{
if(sh[i] != '=')
left++ ;
else
break ;
}
right = len-left- ;
left -= ;
if(right == left)
{
printf("%s\n",sh) ;
continue ;
}
else if(right - == left +)
{
printf("|") ;
for(int i = ; i < len- ; i++)
printf("%c",sh[i]) ;
printf("\n") ;
}
else if(right + == left - )
{
if(sh[] == '+')
{
printf("|+") ;
for(int i = ; i < len ; i++)
printf("%c",sh[i]) ;
printf("|\n") ;
}
else
{
for(int i = ; i < len ; i++)
printf("%c",sh[i]) ;
printf("|\n") ;
}
}
else printf("Impossible\n") ;
}
return ;
}

Very Beautiful Number

用的乘法,跑时171ms,看了一个人的代码用了62ms,看他用的是除法,其实这些个原理都差不多,不懂的可以去百度。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h> using namespace std ; char ch[] ; int main()
{
int p,x ;
while(~scanf("%d %d",&p,&x))
{
int flag = ;
for(int i = ; i < ; i++)
{
memset(ch,,sizeof(ch)) ;
ch[] = ch[p] = i + '' ;
int s = ;
for(int j = p ; j > ; j--)
{
int k = (ch[j]-'')*x ;
ch[j-] = (k+s)%+'' ;
s = (k+s)/ ;
}
if(s == && ch[] == ch[p] && ch[] != '')
{flag = ;
break ;}
}
if(flag){
for(int i = ; i <= p ; i++)
printf("%c",ch[i]) ;
printf("\n") ;
}
else
printf("Impossible\n") ;
}
return ;
}
#include <iostream>
using namespace std; char nums[]; int main()
{
int p,x;
cin>>p>>x;
for(int i = x ; i < ; ++i)
{
int n = i , a , b ;
for(int j = ; j < p ; ++j)
{
a = n/x, b = n % x ;
n = b*+a;
nums[j] = ''+a;
}
nums[p] = '\0';
if(a==i && b==)
{
cout<<nums<<endl;
break;
}
if(i==)cout<<"Impossible"<<endl;
}
return ;
}
上一篇:【POJ】2151 Check the difficulty of problems


下一篇:vue+koa实现简单的图书小程序(2)