搞笑版費馬大定理 (湖南省第九屆大學生電腦程式設計競賽)

來源:互聯網
上載者:User

標籤:acm   演算法   



1337: 搞笑版費馬大定理Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 402  Solved: 193
[Submit][Status][Web Board]Description

費馬大定理:當n>2時,不定方程an+bn=cn沒有正整數解。比如a3+b3=c3沒有正整數解。為了活躍氣氛,我們不妨來個搞笑版:把方程改成a3+b3=c3,這樣就有解了,比如a=4, b=9, c=79時43+93=793。

輸入兩個整數x, y, 求滿足x<=a,b,c<=y的整數解的個數。

Input

輸入最多包含10組資料。每組資料包含兩個整數x, y(1<=x,y<=108)。

Output

對於每組資料,輸出解的個數。

Sample Input
1 10
1 20
123 456789
Sample Output
Case 1: 0
Case 2: 2
Case 3: 16
HINT 其實是一道水題,開始也想了很久沒什麼思路,感覺就那麼做會逾時,沒有明白題目的深一層的含義, 其實給我們的資料範圍就是一個突破口; 雖然x和y的範圍都是10^8,但是如果a 是大於1000的話,那麼a^3就會大於10^9,這樣等號的右邊只有一個10 * c + 3,這個最大隻能達到10^9數量級,所以,不管輸入的x跟y是多少,我們只要取其中的在1到1000的區間就可以了,枚舉a和b,那麼c就可以得到,然後判斷c的範圍是不是在x到y之間,這樣時間複雜度就降到了10^6.
有了上面的分析,這道題就很簡單啦;直接暴力,兩個迴圈就搞定了;
#include <cstdio>#include <cstring>using namespace std;int main(){    int x,y,a,b,c,count,k=0;    while(scanf("%d%d",&x,&y)!=EOF)    {        count=0;         for(a=x;a<=1000&&a<=y;a++)            for(b=x;b<=1000&&b<=y;b++)         {             int s=a*a*a+b*b*b;             if(s%10!=3) continue;              c=s/10;              if(c>=x&&c<=y) count++;         }          printf("Case %d: %d\n", ++k, count);    }    return 0;}
別人0ms的代碼;
#include<stdio.h>  int main(){    //freopen("a.txt","r",stdin);    long long x,y,i,j,t;    int a=0;    while(scanf("%lld%lld",&x,&y)!=EOF)    {        t=x*x*x;        a++;        y=y*10+3;        int cnt=0;        for(i=x,j=1;t+i*i*i<=y;i++,j++);        long long ii=i,jj=j;        //printf("%lld %lld\n",i,j);        for(i=x;i<=ii;i++)        {            int k=(13-i*i*i%10)%10;            if(k!=0 && k!=1 && k!=4 && k!=5 && k!=6 && k!=9) k=10-k;            for(j=x-x%10+k;j<ii;j+=10)            {                if(j<x) j+=10;                if(j*j*j+i*i*i<=y)   cnt++; //printf("%lld %lld\n",i,j);            }        }        printf("Case %d: %d\n",a,cnt);    }    return 0;}



1337: 搞笑版費馬大定理Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 402  Solved: 193
[Submit][Status][Web Board]Description

費馬大定理:當n>2時,不定方程an+bn=cn沒有正整數解。比如a3+b3=c3沒有正整數解。為了活躍氣氛,我們不妨來個搞笑版:把方程改成a3+b3=c3,這樣就有解了,比如a=4, b=9, c=79時43+93=793。

輸入兩個整數x, y, 求滿足x<=a,b,c<=y的整數解的個數。

Input

輸入最多包含10組資料。每組資料包含兩個整數x, y(1<=x,y<=108)。

Output

對於每組資料,輸出解的個數。

Sample Input
1 101 20123 456789
Sample Output
Case 1: 0Case 2: 2Case 3: 16
HINT

搞笑版費馬大定理 (湖南省第九屆大學生電腦程式設計競賽)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.