一、回文数
题目:
解答:
#include<iostream>
using namespace std;
int d[6];
bool judge(int n,int k)
{
int x,i=0,sum=0;
x=n;
while(x!=0)
{
d[i]=x%10;
x=x/10;
i++;
}
bool f=true;
for(int j=0;j<i;j++)
{
sum+=d[j];
}
if(sum!=k) f=false;
else
for(int j=0;j<i/2;j++)
{
if(d[j]!=d[i-j-1])
f=false;
}
if(f==false)*斜体样式*
return false;
else
return true;
}
int main()
{
int k;
cin>>k;
for(int i=10000;i<1000000;i++)
{
if(judge(i,k)){
cout<<i<<endl;}
}
return 0;
}
二、十进制转十六进制
问题:
题解:
“除积倒取余”
#include<iostream>
using namespace std;
int main()
{
char j[]="0123456789ABCDEF";//注意这一行
int a;
cin>>a;
string s;
while(a!=0){
int x=a;
x=x%16;
s=j[x]+s;
a=a/16;
}
cout<<s;
return 0;
}
四、日期统计
#include <iostream>
using namespace std;
int main()
{
int array[100]={5 ,6 ,8 ,6 ,9 ,1 ,6 ,1 ,2 ,4 ,9 ,
1 ,9 ,8 ,2 ,3, 6, 4, 7, 7, 5, 9,
5, 0, 3, 8 ,7 ,5 ,8 ,1 ,5 ,8 ,6 ,
1 ,8 ,3 ,0 ,3 ,7 ,9 ,2 ,7 ,0 ,5 ,
8 ,8 ,5 ,7 ,0, 9, 9, 1, 9, 4, 4,
6 ,8, 6 ,3 ,3 ,8 ,5 ,1 ,6 ,3 ,4 ,
6 ,7 ,0 ,7 ,8 ,2 ,7 ,6 ,8 ,9 ,5 ,
6 ,5 ,6 ,1 ,4 ,0 ,1 ,0 ,0 ,9 ,4 ,
8 ,0 ,9 ,1 ,2 ,8 ,5 ,0 ,2 ,5 ,3 ,3};
int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int ans=0;
for(int month=1;month<=12;month++)
for(int day=1;day<=monthday[month];day++)
{
int ymd[8]={2,0,2,3,month/10,month%10,day/10,day%10};
int k=0;
for(int i=0;i<100;i++)
{
if(array[i]==ymd[k])
k++;
if(k==8)
{ ans++;
break;
}
}
}
cout<<ans;
return 0;
}
五、01的熵
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
double sum=0,h=11625907.5798, length=23333333;
for(int o=0;o<length/2;o++)
{
sum=0;
sum-=o *(o/length) *log2(o/length) + (length-o)*((length-o)/length)*log2((length-o)/length);
if(sum<11625907.6&&sum>11625907.5)
{
printf("%d",o);
break;
}
}
return 0;
}
六、冶炼金属
#include <iostream>
using namespace std;
#define max 10000
int main()
{
long long n,a[max],b[max],maxv=10000000000000;
cin>>n;
for(int i=0;i<n;i++ )
{
cin>>a[i]>>b[i];
if(maxv>a[i]/b[i])
maxv=a[i]/b[i];
}
int j;
int h=0;
for(j=maxv;j>0;j--)
{
for(int i=0;i<n;i++)
{
if(a[i]/j!=b[i])
{
h=3;
break;
}
}
if(h==3)
break;
}
cout<<j+1<<" "<<maxv;
return 0;
}
七、飞机降落
#include <iostream>
using namespace std;
const int N=20;
int n;
struct plane{
int t,d,l;
}p[N];
bool st[N];
bool dfs(int u,int time)
{
if(u>=n)
{
return true;
}
for(int i=0;i<n;i++)
{
if(!st[i])
{
st[i]=true;
if(p[i].t+p[i].d<time)
{st[i]=false;
return false;}
int t=max(time,p[i].t)+p[i].l;
if(dfs(u+1,t))
return true;
st[i]=false;
}
}
return false;
}
void solve()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>p[i].t>>p[i].d>>p[i].l;
}
if(dfs(0,0))
{
cout<<"YES"<<endl;
}
else cout<<"NO"<<endl;
for(int i=0;i<n;i++)
{
st[i]=false;
}
}
int main()
{
int n;
cin>>n;
while(n--)
solve();
return 0;
}