题意:中文题目,不再赘述。
HDU 2041
Code:
#include <iostream>
using namespace std;
int main()
{
int i,j,n,a,f[40]={0,1,2};
for(i=3;i<40;i++)
f[i]=f[i-1]+f[i-2];
while(cin>>n)
for(j=0;j<n;j++)
{ cin>>a;
if(a>=1&&a<=40)
cout<<f[a-1]<<endl;
}
return 0;
}
HDU 2042
Code:
#include <iostream>
using namespace std;
int main()
{
int n,a;
cin>>n;
while(n--)
{
cin>>a;
int num = 3;
for(int i = 1; i <= a; i++)
num = (num-1)*2;
cout<<num<<endl;
}
return 0;
}
HDU 2043
Code:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
char str[50]; int M;
cin>>M;
while(M--)
{
cin>>str;
int len = strlen(str);
int a=0,b=0,c=0,d=0;
for(int i = 0; i< len; i++)
{
if(str[i]>='A' && str[i]<='Z') a = 1;
if(str[i]>='a' && str[i]<='z') b = 1;
if(str[i]>='0' && str[i]<='9') c = 1;
if(str[i]=='~'||str[i]=='!'||str[i]=='@'||str[i]=='#'||str[i]=='$'||str[i]=='%'||str[i]=='^') d = 1;
}
int flag = a + b + c + d;
if(flag >= 3 && len >= 8 && len <= 16) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
HDU 2044
Code:
#include <iostream>
using namespace std;
int main()
{
__int64 i,j,n,a,b,f[50]={1,1,2,3};
cin>>n;
for(i=4;i<50;i++)
f[i]=f[i-1]+f[i-2];
if(n)
{
for(j=0;j<n;j++)
{ cin>>a>>b;
if(a>0&&a<50&&b>0&&b<50&&a<=b)
{cout<<f[b-a]<<endl;}
else if(a>b)
{cout<<"0"<<endl;}
}
}
return 0;
}
HDU 2046
Code:
#include <stdio.h>
int main()
{
__int64 i,n,f[51]={1,1,2,3};
for(i=4;i<51;i++)
f[i]=f[i-1]+f[i-2];
while(scanf("%I64d",&n)!=EOF)
if(n>=0&&n<=50)
{ printf("%I64d\n",f[n]);}
return 0;
}
HDU 2047
Code:
#include <stdio.h>
int main()
{
__int64 i,n,f[41]={0,3,8};
for(i=3;i<41;i++)
f[i]=2*(f[i-1]+f[i-2]);
while(scanf("%I64d",&n)!=EOF)
if(n>0&&n<40)
printf("%I64d\n",f[n]);
return 0;
}
HDU 2048
Code:
#include <stdio.h>
int main()
{
int i,n,t,j,k;
double b,sum[21]={0,0,1};
scanf("%d",&t);
for(j=0;j<t;j++)
{
scanf("%d",&n);
{ b=1;
if(n>1&&n<=20)
{
for(i=3;i<=20;i++)
sum[i]=(i-1)*(sum[i-1]+sum[i-2]);
for(k=n;k>=1;k--)
{ b*=k; }
printf("%.2lf%%\n",sum[n]*100/b);
}
}
}
return 0;
}
HDU 2051
Code:
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
int main()
{
int a,b;
vector<int> q;
while(scanf("%d",&a) != EOF)
{
while(a)
{
b = a%2, a /= 2;
q.push_back(b);
}
int len = q.size();
len--;
if(q[len] == 0) len--;
else
{
for(int i = len; i>= 0; i--)
printf("%d",q[i]);
printf("\n");
}
q.clear();
}
return 0;
}
HDU 2052
Code:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,m;
while(scanf("%d%d",&n,&m) != EOF)
{
for(int i = 0; i <= m+1; i++)
{
for(int j = 0; j <= n+1; j++)
{
if((i == 0 || i == m+1) && (j == 0 || j == n+1)) printf("+");
else if((i == 0|| i == m+1) && j>0&& j < n+1) printf("-");
else if(i >0 && i < m+1 && (j == 0 || j == n+1)) printf("|");
else if(i >0 && i < m+1 && j > 0 && j < n+1) printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
}
HDU 2053
Code:
#include <iostream>
using namespace std;
int main()
{
int n,flag;
while(cin>>n)
{
flag = 0;
for(int i = 1; i <= n; i++)
if(n%i == 0) flag = !flag;
cout<<flag<<endl;
}
return 0;
}
HDU 2054
思路:此题有坑,看完题目后觉得题太简单了,给的测试案例也都是整数,许多情况根本考虑不到。主要是考虑小数中末尾的0,如9.0和9.00是相等的数,所以输入的数据类型最好定义成字符串,然后在比较两个数前先把末尾的0去掉。另外,在定义字符串是如果你用一个a[100]来输入交上去后也会报错,当你开到a[50000]时它才会让你AC!
Code:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
void deal(char *a)
{
int len,i;
len = strlen(a)-1;
for(int i = len; i >= 0; i--)
if(a[i] == '0') len--;
else break;
if(a[len] == '.') len--;
a[len+1] = '\0';
}
int main()
{
char A[50000],B[50000];
int len1,len2;
while(scanf("%s %s",&A,&B) != EOF)
{
len1 = strlen(A), len2 = strlen(B);
for(int i = 0; i < len1; i++)
if(A[i] == '.') deal(A);
for(int j = 0; j < len2; j++)
if(B[j] == '.') deal(B);
if(strcmp(A,B) == 0) printf("YES\n");
else printf("NO\n");
}
return 0;
}
HDU 2055
Code:
#include <iostream>
using namespace std;
int main()
{
char x;
int T,y,temp;
cin>>T;
while(T--)
{
cin>>x>>y;
if(x >= 'A' && x <= 'Z') temp = x - '@';
else temp = '`' - x;
cout<<y+temp<<endl;
}
return 0;
}
HDU 2064
Code:
#include <iostream>
using namespace std;
long long f[36],N;
int main()
{
f[1] = 2;
for(long long i = 2; i<= 35; i++)
f[i] = 3*f[i-1] + 2;
while(cin>>N)
cout<<f[N]<<endl;
return 0;
}
HDU 2070
Code:
#include <stdio.h>
int main()
{
int a,i;
__int64 f[55];
f[0] = 0,f[1] = 1;
for(i = 2; i<=50; i++)
f[i] = f[i-1] + f[i-2];
while(scanf("%d",&a) == 1 && a != -1)
printf("%I64d\n",f[a]);
return 0;
}
HDU 2071
Code:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
int t,n;
double height[100];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%lf",&height[i]);
sort(height,height+n);
printf("%.2lf\n",height[n-1]);
}
return 0;
}
HDU 2072
Code:
#include <iostream>
#include <string>
#include <cstdio>
#include <set>
using namespace std;
int main()
{
char c;
string s;
set<string> q;
while((c=getchar()) != '#')
{
s = "";
while(c !=' ' && c !='\n')
{
s += c;
c = getchar();
}
if(s.length()) q.insert(s);
if(c == '\n')
{
cout<<q.size()<<endl;
q.clear();
}
}
return 0;
}
HDU 2075
Code:
#include <iostream>
using namespace std;
int main()
{
int T,A,B;
cin>>T;
while(T--)
{
cin>>A>>B;
if(A%B == 0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
HDU 2076
注意:此题有坑,fabs()函数里边的元素一定主要全部转换成浮点数
Code:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int h,m,s,T;
double angle;
cin>>T;
while(T--)
{
cin>>h>>m>>s;
if(h > 12) h = h-12;
angle = fabs(m*6+s*0.1-(30*h+m*0.5+0.1*s/12));
if(angle>180) angle = 360 - angle;
cout<<(int)angle<<endl;
}
return 0;
}
HDU 2080
Code:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define pi 180/3.1415926
int main()
{
int T;
cin>>T;
double x1,y1,x2,y2;
while(T--)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
double a = atan2(x1,y1);
double b = atan2(x2,y2);
double c = fabs(a-b);
printf("%.2lf\n",c*pi);
}
return 0;
}
HDU 2081
Code:
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
char phonenumber[11];
while(N--)
{
cin>>phonenumber;
cout<<'6';
for(int i = 6; i < 11; i++)
cout<<phonenumber[i];
cout<<endl;
}
return 0;
}
HDU 2083
Code:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int coordinate[500],temp;
int M,N;
cin>>M;
while(M--)
{
cin>>N;
int sum = 0;
for(int i = 0; i < N; i++)
cin>>coordinate[i];
sort(coordinate,coordinate+N);
temp = coordinate[N/2];
for(int j = 0; j < N; j++)
sum +=(int)abs((double)(temp-coordinate[j]));
cout<<sum<<endl;
}
return 0;
}
HDU 2085
Code:
#include <iostream>
using namespace std;
long long A[33],B[33];
int main()
{
int n;
A[0] = 1,B[0] = 0;
A[1] = 3,B[1] = 1;
for(int i = 2; i <= 33; i++)
{
A[i] = A[i-1]*3 + B[i-1]*2;
B[i] = A[i-1] + B[i-1];
}
while(cin>>n && n != -1)
cout<<A[n]<<", "<<B[n]<<endl;
return 0;
}
HDU 2087
Code:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[1000],b[1000];
while(cin>>a && a[0] !='#')
{
cin>>b;
int i,j;
int flag = 0, num = 0;
int len1 = strlen(a);
int len2 = strlen(b);
for(i = 0; i < len1; )
{
while(a[i] != b[0] && i < len1) i++;
for(j = 0; j< len2; j++)
{
if(a[i] == b[j]) i++;
else { break; }
}
if(j == len2) num++;
}
cout<<num<<endl;
}
return 0;
}
HDU 2089
Code:
#include <iostream>
#include <cstring>
using namespace std;
#define maxn 1000000
int vis[maxn];
int main()
{
int n,m,cnt = 0;
memset(vis,0,sizeof(vis));
for(int i = 1; i < 1000000; i++)
{
int flag = i, temp = 1;
while(flag)
{
if(flag%10 == 4 || flag%100 == 62) { temp = 0; break; }
flag /= 10;
}
if(temp) cnt++;
vis[i] = cnt;
}
while(cin>>n>>m && n+m)
cout<<vis[m]-vis[n-1]<<endl;
return 0;
}
HDU 2041
HDU 2035
HDU 2033
HDU 2034
HDU 2035
HDU 2033
HDU 2034
HDU 2035
HDU 2033
HDU 2034
HDU 2035