三个题就做对一个,还是很有差距呀,第一个正确。第二三个没有AC,贴一下代码:
#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
#include<cmath>
#include<float.h>
using namespace std;
inline char next(char t){
t=(t+1);
if(t=='z'+1)
t='a';
return t;
}
int main(){
char ch='a';
for(int i=3;i<=10;++i){
vector<vector<char> > vecs(i,vector<char>(i,' '));
for(int j=0;j<i;++j){
vecs[j][0]=ch;
ch=next(ch);
}
int ind=1;
for(int j=i-2;j>0;--j){
vecs[j][ind++]=ch;
ch=next(ch);
}
for(int j=0;j<i;++j){
vecs[j][i-1]=ch;
ch=next(ch);
}
for(int m=0;m<i;++m){
for(int n=0;n<i;++n)
cout<<vecs[m][n];
cout<<endl;
}
}
return 0;
}
这个题超时。
#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int T;
freopen("in.txt","r",stdin);
cin>>T;
int N,A,B;
while(scanf("%d %d %d",&N,&A,&B)!=EOF){
int sum=0;
int t=0;
if(A==B){
cout<<0<<endl;
continue;
}
for(int i=0;i<A;++i){
for(int j=i;j<N;j+=A){
t=i-j%B;
t=t>=0?t:(-t);
sum+=t;
}
}
cout<<sum<<endl;
}
return 0;
}
看了一下网上的代码:http://blog.csdn.net/tri_integral/article/details/9472363
不能理解:根据依据最小公倍数循环的特性写了个,但是不能AC,不知道哪里的问题。
#include<iostream>
#include<limits>
#include<vector>
#include<fstream>
#include<cstdio>
#include<ctime>
#include<algorithm>
#include<numeric>
using namespace std;
int gcd(int a,int b) {
return b?gcd(b,a%b):a;
}
int func(int N,int A,int B) {
int lcm=A/gcd(A,B)*B;
vector<int> vecs(lcm);
for(int i=0; i<lcm; ++i) {
vecs[i]=abs(i%A-i%B);
}
if(N<=lcm)
return accumulate(vecs.begin(),vecs.begin()+N,0);
int sum=accumulate(vecs.begin(),vecs.end(),0);
int n=N/lcm;
int ans=n*sum;
int m=N%lcm;
for(int i=0; i<m; ++i)
ans+=vecs[i];
return ans;
}
int main() {
int T;
int N,A,B;
cin>>T;
while(T--){
cin>>N>>A>>B;
cout<<func(N,A,B)<<endl;
}
return 0;
}
#include<iostream>
#include<iomanip>
#include<cmath>
#include<float.h>
#include<cstdio>
using namespace std;
struct Point{
double x;
double y;
}pt[101];
double dis(const Point& p1,const Point&p2){
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
double area(const Point& p1,const Point& p2,const Point& p3){
if(fabs(p1.x-p2.x)<FLT_EPSILON&&fabs(p2.x-p3.x)<FLT_EPSILON)
return 0;
if(fabs(p1.y-p2.y)<FLT_EPSILON&&fabs(p2.y-p3.y)<FLT_EPSILON)
return 0;
double l1=dis(p1,p2);
double l2=dis(p1,p3);
double l3=dis(p2,p3);
double s=(l1+l2+l3)/2;
return sqrt(s*(s-l1)*(s-l2)*(s-l3));
}
int arr[3]={0};
double minArea=DBL_MAX;
void proc(int ind,int n,int N){
if(ind==3){
double a=area(pt[arr[0]],pt[arr[1]],pt[arr[2]]);
if(a<minArea) minArea=a;
return ;
}
if(n>N) return ;
arr[ind]=n;
proc(ind+1,n+1,N);
arr[ind]-=n;
proc(ind,n+1,N);
}
int main(){
freopen("in.txt","r",stdin);
int T;
cin>>T;
while(T--){
int N;
while(cin>>N){
for(int i=0;i<N;++i){
cin>>pt[i].x>>pt[i].y;
}
proc(0,0,N-1);
// cout<<setprecision(2)<<(double)minArea<<endl;
if(fabs(minArea-0)<FLT_EPSILON) printf("Impossible\n");
else
printf("%.2f\n",minArea);
}
}
return 0;
}