W13-01 C/C++ 瘋狂程設進階vs. CPE一顆星題
一、函數反序排列數字
(1)剝皮法
(2)吹氣放大法
二、2進位轉10進位
剝皮法->組合2進位
三、 CPE一顆星題
Digit Generator題目
先把簡單的架構寫出來
題目是要反過來的->用暴力去試
增加genBig函式 : 剛剛學的剝皮法 !
ans = n + 取餘數後的每個各數 + . . . +到第1位數
執行結果 :
~程式碼~
///技巧1:看sample Input/Output,有幾筆
/// 把題目的迴圈寫出來
///技巧2:找答案的關係
/// 找關鍵字ctrl+F:generator
///技巧3:什麼是 generator?
///技巧4:題目反過來問,小->大(簡單),倒過來問->(難)
/// 暴力去試: N 試1,2,3,4,...,N 都試一遍 小->大
///技巧5:generator把小的i->大的
///技巧6:用"函式"來簡化程式碼
#include <stdio.h>
int genBig(int n)
{
int ans=n;
while(n>0){///剝皮法
ans+=n%10;
n/=10;
}
return ans;
}
int main()
{
int T;///Test Case有幾筆資料
scanf("%d",&T);
for(int t=0;t<T;t++)
{
int N,ans=0;
scanf("%d",&N);
for(int i=0;i<=N;i++){
if(genBig(i)==N){
ans=i;
break;
}
}
printf("%d",ans);
}
}
/// 把題目的迴圈寫出來
///技巧2:找答案的關係
/// 找關鍵字ctrl+F:generator
///技巧3:什麼是 generator?
///技巧4:題目反過來問,小->大(簡單),倒過來問->(難)
/// 暴力去試: N 試1,2,3,4,...,N 都試一遍 小->大
///技巧5:generator把小的i->大的
///技巧6:用"函式"來簡化程式碼
#include <stdio.h>
int genBig(int n)
{
int ans=n;
while(n>0){///剝皮法
ans+=n%10;
n/=10;
}
return ans;
}
int main()
{
int T;///Test Case有幾筆資料
scanf("%d",&T);
for(int t=0;t<T;t++)
{
int N,ans=0;
scanf("%d",&N);
for(int i=0;i<=N;i++){
if(genBig(i)==N){
ans=i;
break;
}
}
printf("%d",ans);
}
}
W13-02AngryBirds
拉進angrybird跟pig的圖片
會存放在data裡面
增加mouse點下去可以拉線,放開時彈出去
彈出去 : 舊的座標-新的座標/10
會彈出視窗,所以要限制他不能超出框框
可以反彈回來
~程式碼~PImage imgBird;
void setup(){
size(500,500);
imgBird = loadImage("bird.png");
imageMode(CENTER);///
}
float birdX=0,birdY=0,oldX=0,oldY=0,vx=0,vy=0;
boolean bMoving=false;
void draw(){
///background(255);
image(imgBird, birdX, birdY, 100, 100);
if(bMoving)line(mouseX, mouseY, oldX, oldY);
birdX+=vx; birdY+=vy;
if(birdX>500-50 || birdX<50) vx=-vx;
if(birdY>400-50 || birdY<50) vy=-vy;
}
void mouseReleased()
{
bMoving=false;
vx=(oldX-mouseX)/10;
vy=(oldY-mouseY)/10;
}
void mousePressed()
{
if(dist(mouseX, mouseY, birdX, birdY)<50){
bMoving=true;
oldX = birdX ; oldY=birdY;
}
}
void mouseDragged()
{
if(bMoving){
birdX = mouseX;birdY=mouseY;
}
}

















沒有留言:
張貼留言