简单计算题集锦

鸡兔同笼问题

注意,脚不是4的倍数的时候最少的动物数,其实就是(N-2)/4+1,只不过这里整形截断了小数部分..

#include "stdio.h"
int main()
{

    int nCases,nFeet ,i;
    scanf("%d",&nCases);
    for(i=0; i

棋盘距离问题

注意不要忽略后的x==0 和y==0的情况

#include "stdio.h"
#include "math.h"
int main()
{
   int nCase;
   scanf("%d",&nCase);
   char begin[20][2],end[20][2];
   for(int i=0;i

校门外的树

主要的问题是怎么存储如果开一个数组,实在是太大,而且不能根据L来调整数组大小,浪费空间。用vector来存flag值比较节省空间。注意一个反省算法的用法count..

#include 
#include 
#include 
using namespace std;

int main()
{
     int L,M,start,end,m,i;
     cin>>L>>M;
     vector tree(L+1,true);

     for (m=0;m>start>>end;
         for(i=start;i<=end;i++)
             tree[i]=false;  
     }
     cout<

确定进制问题

1.需要注意字符串转十进制数的方法ret = ret*b + x[i]-'0';
2.注意如果在2-16数制中如数字超过进制,返回-1,提前跳出当前循环...

#include 
#include 
#include 
using namespace std;

long b2ten(string x,int b)
{
   long ret = 0;
   for(int i=0;i=b) return -1;
       ret = ret*b + x[i]-'0';
   }
   return ret;
}

int main()
{
     int n,b;
     string p,q,r;
     long pAgr,qAgr,rAgr;
     cin>>n;
     while(n--)
     {
         cin>>p>>q>>r;
         for(b=2;b<=16;b++)
         {
             pAgr = b2ten(p,b);
             qAgr = b2ten(q,b);
             rAgr = b2ten(r,b);
             if(pAgr == -1 || qAgr == -1 || rAgr == -1) continue;
             if(pAgr * qAgr == rAgr){
                cout<

skew数的问题

挺简单,就是一个数制转换的问题,要把每一个base的基计算出来,要注意base和字符串的对应关系..

#include 
#include 
using namespace std;
int main()
{
    int base[31],sum,k;
    string skew;
    base[0] = 1;
    for(int i=1; i<31; i++) base[i]=2*base[i-1]+1;
    while(1)
    {
        cin>>skew;
        if(skew == "0")
            break;
        sum = 0;
        k = skew.length();
        for(i=0;i

你可能感兴趣的:(简单计算题集锦)