Lecture (4)包含一下六道编程题,可以在上面的OJ提交。
022:角谷猜想
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
long long n; \\ 可能会超过int范围
scanf("%lld",&n);
while(n!=1)
{
if(n%2)
{
printf("%lld*3+1=%lld\n",n,n*3+1);
n = n*3+1;
}
else
{
printf("%lld/2=%lld\n",n,n/2);
n /= 2;
}
}
cout<<"End"<<endl;
return 0;
023:正常血压
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
cin>>n;
int a,b;
int total = 0;
int res = 0;
while(n--)
{
cin>>a>>b;
if(a>=90&&a<=140&&b>=60&&b<=90)
{
res++;
if(res>total)
total=res;
}
else
{
res = 0;
}
}
cout<<total<<endl;
return 0;
}
024:数字反转
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, const char * argv[]) {
int n;
cin>>n;
int num = n;
int count=0;
//计算位数
while(num)
{
num/=10;
count++;
}
int sum = 0;
int remain=0;
count -= 1;
while(n)
{
remain = n%10;
sum += int(pow(10,count)*remain);
count--;
n /= 10;
}
cout<<sum<<endl;
return 0;
}
025:求特殊自然数
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int i,j,k;
int num7,num9;
bool flag1=false,flag2=false;
for(i=1;i<=6;i++)
{
for(j=0;j<=6;j++)
{
for(k=1;k<=6;k++)
{
num7 = i*49+j*7+k;
num9 = k*81+j*9+i;
if(num7==num9)
{
printf("%d\n",num7);
printf("%d%d%d\n",i,j,k);
printf("%d%d%d\n",k,j,i);
flag1=true;
break;
}
}
if(flag1)
{
flag2=true;
break;
}
}
if(flag2)
break;
}
return 0;
}
026:雇佣兵
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, const char * argv[]) {
int m,n,x;
cin>>m>>n>>x;
while(m>=n)
{
x -= ceil(double(m)/n); //恢复最大体力值m时,每个能力元素可以恢复的值不超过当前战斗力(未增加之前)
if(x<0)
break;
n += m/n;
}
cout<<n<<endl;
return 0;
}
027:数字统计
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int L,R;
cin>>L>>R;
int i;
int sum=0;
for(i=L;i<=R;i++)
{
int n=i;
while(n)
{
if(n%10==2)
sum++;
n/=10;
}
}
cout<<sum<<endl;
return 0;
}